如何在ios中的for循环中更新NSManagedObject键值对

时间:2014-09-05 04:49:41

标签: ios objective-c core-data

您好,在我的应用程序中,我使用的是Core Data,在一个地方我必须更新状态(NSManaged对象中的一个键)。我在for循环中进行的更新。每当我尝试这样做时,应用程序都会崩溃。任何人都可以帮助我。

NSManagedObjectContext *threadManagedObjectContext = [self myManagedContext] ;

[[NSNotificationCenter defaultCenter] removeObserver:self name:NSManagedObjectContextObjectsDidChangeNotification object:threadManagedObjectContext] ;

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mergeContextChangesForNotification:) name:NSManagedObjectContextObjectsDidChangeNotification object:threadManagedObjectContext];
        NSManagedObject *object = [threadManagedObjectContext objectWithID:[_object objectID]] ;

 if (statusArray)
 {            
    for (NSDictionary *statusDic in statusArray)
    {        
        [object setValue:[[statusDic allValues] lastObject] forKey:[[statusDic allKeys] lastObject]] ;
     }
  }

在StatusArray中我有一个词典。每个字典都包含一个键值对,就像这个status:0

一样

1 个答案:

答案 0 :(得分:0)

您需要在NSManagedObjectContext上调用save:方法来提交您所做的更改。

if (statusArray) {
    for (int i=0;i<[statusArray count];i++) {
        NSDictionary *statusDic=[statusArray objectAtIndex:i];
        [object setValue:[[statusDic allValues] lastObject] forKey:[[statusDic allKeys] lastObject]] ;
        NSError *error = nil;
        if(![threadManagedObjectContext save:&error]) {
            NSLog(@"Error saving!!!!!: %@", error.userInfo);
        }
    }
}