Monday, 15 July 2013

iphone - Core data doesn't fetch objects -



iphone - Core data doesn't fetch objects -

hello here nsfetchedresultscontroller implementation:

-(nsfetchedresultscontroller *)fetchedresultscontroller { if (_fetchedresultscontroller != nil) { homecoming _fetchedresultscontroller; } nslog(@"context - %@",self.context); nsfetchrequest *fetchrequest = [[nsfetchrequest alloc] init]; nsentitydescription *entity = [nsentitydescription entityforname:@"categories" inmanagedobjectcontext:self.context]; [fetchrequest setentity:entity]; nssortdescriptor *sort = [[nssortdescriptor alloc] initwithkey:@"name" ascending:yes]; [fetchrequest setsortdescriptors:@[sort]]; [fetchrequest setfetchbatchsize:20]; nsfetchedresultscontroller *thefetchedresultscontroller = [[nsfetchedresultscontroller alloc] initwithfetchrequest:fetchrequest managedobjectcontext:self.context sectionnamekeypath:nil cachename:@"root"]; _fetchedresultscontroller = thefetchedresultscontroller; _fetchedresultscontroller.delegate = self; // [[self context] fetchobjectsforentityname:@"categories" withpredicate: // nil] ; homecoming _fetchedresultscontroller; }

fetchedresultscontroller.fetchedobjects nil. here how i'm adding objects:

-(void)addcategorywithname:(nsstring *)name { nslog(@"context - %@",self.context); categories *category = (categories *)[nsentitydescription insertnewobjectforentityforname:@"categories" inmanagedobjectcontext:self.context]; category.name = name; nslog(@"category name - %@",category.name); category.displayorder = [nsnumber numberwithfloat:1.0f]; // site.displayorder = displayorder; nserror __block *error; if (![self.context save:&error]){ nslog(@"error saving - %@", [error localizeddescription]); } }

there no error, no nothing. if see .sqlite file in documents directory it's modified, can't objects fetched. weird, i'm using fundamentally same codes other app , works fine.

any ideas?

you have phone call performfetch on fetched results controller once. otherwise not fetch , not track changes. illustration add

nserror *error; if (![_fetchedresultscontroller performfetch:&error]) { // error handling }

at end of fetchedresultscontroller getter method.

remark: seems specifying cachename without sectionnamekeypath can cause problems, see uitableview nsfetchedresultscontroller not load sec time. since cache used cache section information, not needed anyway if don't have sections.

update: preceding remark no longer valid, turned out problems in linked question had different cause.

iphone ios core-data

No comments:

Post a Comment