2014-09-05 85 views
0

嗨,在我的應用程序中,我正在使用核心數據,並且在一個地方我必須更新狀態(NSManaged對象中的一個鍵)。我在for循環中做的更新。每當我試圖做它應用程序崩潰。誰能幫幫我嗎。如何更新ios中for循環中的NSManagedObject鍵值對

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

+0

什麼是崩潰消息? – Paulw11 2014-09-05 05:19:07

+0

錯誤:終止應用程序,由於未捕獲的異常'NSGenericException',原因:NSDictionary被枚舉時發生了變化 – user3341324 2014-09-05 06:10:21

+0

嗨,保羅這裏是崩潰消息:終止應用程序由於未捕獲異常'NSGenericException',原因:'***集合<__ NSDictionaryM:枚舉時,0xd01b9e0>發生了變異。' – user3341324 2014-09-05 06:16:12

回答

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); 
     } 
    } 
} 
+0

嗨赫曼特感謝您的回覆。但是應用程序在這裏崩潰的是崩潰消息\t 由於未捕獲的異常「NSGenericException」而終止應用程序,原因:'***集合<__ NSDictionaryM:0xd01b9e0>在枚舉時發生了變化。 - – user3341324 2014-09-05 07:14:00