2016-06-21 58 views
0

我在數據庫中有一個NSManagedObject(用戶)。然後我試圖從數據庫中獲取該對象並更新字段名:NSManagedObjectContext不會持久更新對象

NSFetchRequest *fetchR = [NSFetchRequest fetchRequestWithEntityName:@"User"]; 
    NSError *err = nil; 
    NSArray *allUsers = [self.managedObjectContext executeFetchRequest:fetchR error:&err]; 

    TMUser *profile = allUsers.firstObject; 
    [profile setValue:@"Username" forKey:@"firstName"]; 

    [self.managedObjectContext save:&err]; 
    if (err) { 
     NSLog(@"Error: %@", err.localizedDescription); 
    } 

該代碼通過沒有錯誤。但是,如果我重新啓動我的應用程序,請求重新調用者用戶沒有更新字段「firstName」。我只有1個NSManagedObjectContext。所有核心數據堆棧都已成功初始化。迎接我的用戶後:

Printing description of allUsers: 
<_PFArray 0x14ed6600>(
ID:3451 
firstName:Johnatan 
lastName:Hike 
phone:380995046960 
email:[email protected] 
language:en 
) 

出於某種原因對象的變化方面未註冊(上下文hasChanges保存= NO前)。我究竟做錯了什麼?請幫忙

回答

0

我解決了我的問題。我從xcdatamodeld方案重新創建了NSManagedObject子類,它工作。我發現如果添加另一個屬性(只讀等),與數據模型方案無關或將屬性類型從NSNumber(aka bool)更改爲BOOL,它將停止更新數據庫中的已存在對象。

0

我想你不是在保存主內容。

請檢查您所撥打:

[managedObjectContext save:&error]; 

所有子上下文的保存數據,

,之後在主背景下也是如此。

你有一個全局函數(在AppDelegate中)saveContext它可以保存一切,並且我可以從任何地方安全地調用它。

+0

我只有一個(主)上下文。我執行保存。新對象也被插入 –