objective c - Core Data - Doing a fetch request only retrieves 1 record; when 10 are inserted? -


in our system user has many accountcredits

these accountcredits come server.

i have request retrieves , inserts 10 records in maincontext of core data entity of accountcredits , can see these 10 records in xcode console log. appear inserted. can see them in xcode console log.

however, straight afterwards perform basic fetch request retrieve user , respective accountcredits -- should see 10; ever see's 1 , don't know why.

the first thing did check context in every step (before, during, after) , context id not change. not context issue.

but not sure why seeing 1 record, when know , have logged 10 records being inserted.

i've tried format make understandable , paste code below;

nsarray *accountcredits = [resource linkedresourceforkey:@"accountcredits"]; if (accountcredits) {     (jsonapiresource *accountcreditresource in accountcredits) {         vicaccountcredits *accountcredits = [vicaccountcredits accountcreditfromresource:accountcreditresource incontext:context];         if (accountcredits) {             [accountcredits setuser:user];             nslog(@"userapi.accountcredit - %@ %lu %@", accountcredits.code, (long)[accountcredits.amountgbp integervalue], accountcredits.user.name);         }     } }  nslog(@"------");  nslog(@"... after loading ...");  nsfetchrequest *fetchrequest = [[nsfetchrequest alloc] init]; nsentitydescription *entity = [nsentitydescription entityforname:@"user" inmanagedobjectcontext:context]; [fetchrequest setentity:entity];  nserror *error = nil; nsarray *fetchedobjects = [context executefetchrequest:fetchrequest error:&error];  (nsmanagedobject *info in fetchedobjects) {     nslog(@"accountcredits -- %@", [info valueforkey:@"accountcredits"]);     vicaccountcredits *cr = [info valueforkey:@"accountcredits"];     nslog(@"cr - %@ %@", cr.code, cr.user.name); } 

the accountcreditforresource creates accountcredit (edited);

+ (vicaccountcredits *)accountcreditfromresource:(jsonapiresource *)resource incontext:(nsmanagedobjectcontext *)context {     nsstring *id = [resource safeobjectforkey:@"id"];     vicaccountcredits *accountcredit = [vicaccountcredits objectwithremoteid:id incontext:context];      if(!accountcredit) {         accountcredit = [self insertinmanagedobjectcontext:context];         accountcredit.remoteid = id;     }      accountcredit.amountgbp = [[resource safeobjectforkey:@"amountgbp"] safeobjectforkey:@"amount"];     accountcredit.code = [[resource safeobjectforkey:@"links"] safeobjectforkey:@"code"];         return accountcredit; } 

i have used breakpoints inside if (!accountcredit) , see indeed enter if-statement , insert correct or maincontext.

log/console reports:

contexts = <nsmanagedobjectcontext: 0x7fa86b624270>  userapi.accountcredit - g0cr7 1000 d userapi.accountcredit - a1gh5 1000 d userapi.accountcredit - a2ef7 1000 d userapi.accountcredit - a4jx4 1000 d userapi.accountcredit - a6na9 1000 d userapi.accountcredit - a9di2 1000 d userapi.accountcredit - d1rk0 1000 d userapi.accountcredit - d2lg1 1000 d userapi.accountcredit - e0uh0 1000 d userapi.accountcredit - e3tu4 1000 d ------ .. after loading ...  accountcredits -- <vicaccountcredits: 0x7fa86b63e870> (entity: accountcredit; id: 0xd000000000100002 <x-coredata://a4310709-6655-4333-8fe3-2c92821da793/accountcredit/p4> ; data: {     amountgbp = 1000;     code = e3tu4;     remoteid = 548f137824848be367e1aac3;     user = "0xd000000000040000 <x-coredata://a4310709-6655-4333-8fe3-2c92821da793/user/p1>"; }) -> 112 cr - e3tu4 d 

i find hard understand why when inserting 10 records can see 1?

can shed light on this?

i did check context... never changes.

i tried deleting app, , restarting/cleaning simulator of data.


turns out missing correct relationship in core data. helped.

try this

//set properety array data  @property (strong) nsmutablearray *data;   nsmanagedobjectcontext *managedobjectcontext = [self managedobjectcontext];     nsfetchrequest *fetchrequest = [[nsfetchrequest alloc] initwithentityname:@"entity"];     self.data = [[managedobjectcontext executefetchrequest:fetchrequest error:nil] mutablecopy]; 

dont forget put method in view controller:

- (nsmanagedobjectcontext *)managedobjectcontext {     nsmanagedobjectcontext *context = nil;     id delegate = [[uiapplication sharedapplication] delegate];     if ([delegate performselector:@selector(managedobjectcontext)]) {         context = [delegate managedobjectcontext];     }     return context; } 

Comments

Popular posts from this blog

java - Plugin org.apache.maven.plugins:maven-install-plugin:2.4 or one of its dependencies could not be resolved -

Round ImageView Android -

How can I utilize Yahoo Weather API in android -