2016-06-21 83 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

我只有一个(主)上下文。我执行保存。新对象也被插入 –