Core data 目标C-核心数据记录更新

Core data 目标C-核心数据记录更新,core-data,nsmanagedobject,Core Data,Nsmanagedobject,我必须更新核心数据中的一些记录。这条路对吗 NSManagedObjectContext *context = [self managedObjectContext]; NSMutableArray *poiFromCD=(NSMutableArray *)[self takePoiFromCoreData]; for (int i=0; i<[array count]; i++) { for (int j=0; j<[poiFromCD count]; j++) {

我必须更新核心数据中的一些记录。这条路对吗

NSManagedObjectContext *context = [self managedObjectContext];
NSMutableArray *poiFromCD=(NSMutableArray *)[self takePoiFromCoreData];

for (int i=0; i<[array count]; i++) {
  for (int j=0; j<[poiFromCD count]; j++) {
    Poi *poi=(Poi *)[poiFromCD objectAtIndex:j];
    if ([[[array objectAtIndex:j]objectForKey:@"poiID"]isEqualToString:poi.poiID]) {
      Poi *p=[poiFromCD objectAtIndex:j];
      p.poiID=[[array objectAtIndex:i]objectForKey:@"poiID"];
      p.lastmod=[[array objectAtIndex:i]objectForKey:@"lastmod"];
   } else {
      Poi *p;
      p=[NSEntityDescription insertNewObjectForEntityForName:@"Poi" inManagedObjectContext:context];
      p.poiID=[[array objectAtIndex:i]objectForKey:@"poiID"];
      p.lastmod=[[array objectAtIndex:i]objectForKey:@"lastmod"];
   }
 }
}

NSError *error;
if (![context save:&error]) {
NSLog(@"Errore durante il salvataggio: %@", [error localizedDescription]);
}
NSManagedObjectContext*context=[self-managedObjectContext];
NSMutableArray*poiFromCD=(NSMutableArray*)[self-takePoiFromCoreData];

对于(int i=0;iNo),这不是更新核心数据对象的标准方法。显然,您试图将核心数据视为SQL,这是行不通的

核心数据不是SQL。实体不是表。对象不是行或记录。属性不是列。核心数据是一个对象图管理系统,它可以或不可以持久化对象图,也可以或不可以在后台使用SQL来持久化对象图。试图用SQL术语来理解核心数据会导致您完全误解重新收集数据,会导致很多悲伤和浪费时间

如果不知道数据模型是什么样子的,我就不能很好地告诉您要做什么,但是您很少需要遍历这样的对象数组