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

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -