ios - What am I doing wrong with my FetchedResultsController that it gives me the warning for setting its delegate? -
i have following code:
- (nsfetchedresultscontroller *)fetchedresultscontroller { if (!_fetchedresultscontroller) { nsmanagedobjectcontext *context = [(appdelegate *)[[uiapplication sharedapplication] delegate] managedobjectcontext]; nsentitydescription *entity = [nsentitydescription entityforname:@"articleinfo" inmanagedobjectcontext:context]; nsfetchrequest *request = [[nsfetchrequest alloc] init]; request.entity = entity; nssortdescriptor *descriptor = [[nssortdescriptor alloc] initwithkey:@"timestamp" ascending:no]; request.sortdescriptors = [nsarray arraywithobject:descriptor]; request.fetchbatchsize = 20; nsfetchedresultscontroller *fetchedresultscontroller = [[nsfetchedresultscontroller alloc] initwithfetchrequest:request managedobjectcontext:context sectionnamekeypath:nil cachename:@"root"]; _fetchedresultscontroller = fetchedresultscontroller; _fetchedresultscontroller.delegate = self; } return _fetchedresultscontroller; }
it reports error back:
assigning 'id' incompatible type 'rootviewcontroller *const __strong'
what doing wrong cause that?
you need let compiler know class conforms nsfetchedresultscontrollerdelegate
protocol.
you can adding .h
file
@interface rootviewcontroller : uitableviewcontroller <nsfetchedresultscontrollerdelegate>
or possibly more preferable add class extension. in .m
file
@interface rootviewcontroller () <nsfetchedresultscontrollerdelegate>
the reasoning why considered being little better it's better information hiding - no other class needs know rootviewcontroller
conforms nsfetchedresultscontrollerdelegate
protocol why make publicly visible?
Comments
Post a Comment