ios - objective-c pointer to 'int *' error when assigning data across relationships -
in tutorial http://www.raywenderlich.com/934/core-data-tutorial-for-ios-getting-started, author creates 2 classes failedbankinfo , failedbankdetails 2 core data entities, have relationship between them, , when assigns object failedbankdetails name of relationship details
on failedbankinfo object/pointer this
failedbankinfo.details = failedbankdetails;
it generates error
implicit conversion of objective-c pointer 'int *' disallowed arc
and same error generated when assigns info.details pointer failedbankdetails * details
for (failedbankinfo *info in fetchedobjects) { nslog(@"name: %@", info.name); failedbankdetails *details = info.details; nslog(@"zip: %@", details.zip); }
can explain why happening?
this full code instructs reader insert applicationdidfinishlaunching
nsmanagedobjectcontext *context = [self managedobjectcontext]; failedbankinfo *failedbankinfo = [nsentitydescription insertnewobjectforentityforname:@"failedbankinfo" inmanagedobjectcontext:context]; failedbankinfo.name = @"test bank"; failedbankinfo.city = @"testville"; failedbankinfo.state = @"testland"; failedbankdetails *failedbankdetails = [nsentitydescription insertnewobjectforentityforname:@"failedbankdetails" inmanagedobjectcontext:context]; failedbankdetails.closedate = [nsdate date]; failedbankdetails.updatedate = [nsdate date]; failedbankdetails.zip = [nsnumber numberwithint:12345]; failedbankdetails.info = failedbankinfo; failedbankinfo.details = failedbankdetails; nserror *error; if (![context save:&error]) { nslog(@"whoops, couldn't save: %@", [error localizeddescription]); } // test listing failedbankinfos store nsfetchrequest *fetchrequest = [[nsfetchrequest alloc] init]; nsentitydescription *entity = [nsentitydescription entityforname:@"failedbankinfo" inmanagedobjectcontext:context]; [fetchrequest setentity:entity]; nsarray *fetchedobjects = [context executefetchrequest:fetchrequest error:&error]; (failedbankinfo *info in fetchedobjects) { nslog(@"name: %@", info.name); failedbankdetails *details = info.details; nslog(@"zip: %@", details.zip); }
before generating classes entities, performed same task/test using managedobject , there no problem
nsmanagedobjectcontext *context = [self managedobjectcontext]; nsmanagedobject *failedbankinfo = [nsentitydescription insertnewobjectforentityforname:@"failedbankinfo" inmanagedobjectcontext:context]; [failedbankinfo setvalue:@"test bank" forkey:@"name"]; [failedbankinfo setvalue:@"testville" forkey:@"city"]; [failedbankinfo setvalue:@"testland" forkey:@"state"]; nsmanagedobject *failedbankdetails = [nsentitydescription insertnewobjectforentityforname:@"failedbankdetails" inmanagedobjectcontext:context]; [failedbankdetails setvalue:[nsdate date] forkey:@"closedate"]; [failedbankdetails setvalue:[nsdate date] forkey:@"updatedate"]; [failedbankdetails setvalue:[nsnumber numberwithint:12345] forkey:@"zip"]; [failedbankdetails setvalue:failedbankinfo forkey:@"info"]; [failedbankinfo setvalue:failedbankdetails forkey:@"details"]; nserror *error; if (![context save:&error]) { nslog(@"whoops, couldn't save: %@", [error localizeddescription]); } nsfetchrequest *fetchrequest = [[nsfetchrequest alloc] init]; nsentitydescription *entity = [nsentitydescription entityforname:@"failedbankinfo" inmanagedobjectcontext:context]; [fetchrequest setentity:entity]; nsarray *fetchedobjects = [context executefetchrequest:fetchrequest error:&error]; (nsmanagedobject *info in fetchedobjects) { nslog(@"name: %@", [info valueforkey:@"name"]); nsmanagedobject *details = [info valueforkey:@"details"]; nslog(@"zip: %@", [details valueforkey:@"zip"]); }
that looks if "details" property of "failedbackinfo" declared as
@property (nonatomic) int *details;
and not – should –
@property (nonatomic, retain) failedbankdetails *details;
Comments
Post a Comment