ios - '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name -
i'm trying add data coredata. code.but i'm getting error.what should in case ?
that viewcontroller.h
@interface loginviewcontroller : uiviewcontroller { nsmanagedobjectcontext *managedobjectcontext; } @property (nonatomic, retain) nsmanagedobjectcontext *managedobjectcontext; @property (readonly, strong, nonatomic) nspersistentstorecoordinator *persistentstorecoordinator;
and .m file
person *person = [[person alloc] initwithjsonstring:string]; nsmanagedobjectcontext *context = [self managedobjectcontext]; nsmanagedobjectcontext *object = [nsentitydescription insertnewobjectforentityforname:@"users" inmanagedobjectcontext:context]; [object setvalue:person.name forkey:@"name"]; [object setvalue:person.id forkey:@"userid"]; [object setvalue:person.statu forkey:@"statu"]; [object setvalue:person.token forkey:@"token"]; [object setvalue:person.sonuc forkey:@"sonuc"]; - (nsmanagedobjectcontext *)managedobjectcontext { if (managedobjectcontext != nil) return managedobjectcontext; nspersistentstorecoordinator *coordinator = [self persistentstorecoordinator]; if (coordinator != nil) { managedobjectcontext = [[nsmanagedobjectcontext alloc] init]; [managedobjectcontext setpersistentstorecoordinator:coordinator]; } return managedobjectcontext; }
this error.
'+entityforname: nil not legal nsmanagedobjectcontext parameter searching entity name 'users''
thanks help
the heart of problem have not thought persistentstorecoordinator
comes from, , object never created.
your check, if (coordinator != nil)
, hiding problem. instead, should aim set things coordinator
never nil
. check can removed or, better, replaced assertion case: nsassert(coordinator != nil, @"there no persistent store coordinator.")
.
if persistent store coordinator comes outside view controller, recommend passing part of view controller’s initialisation. if view controller can set persistent store coordinator itself, either part of initialisation or load lazily.