2012-05-24 138 views
0

如何更新核心数据实体,需要采取哪些操作?我有一个Store,与Product有一对多的关系。当我对产品进行更改时,请删除一个或添加,然后是否需要执行任何操作,例如调用某些方法?或者我只是编辑产品并让它们保持独立,然后在用户退出应用程序时将它们保存到持久性存储中?这是正常的方式吗?更新核心数据实体

回答

1

你必须拯救它们是持续性 - 见Managed Object Context in the Core Data Programming Guide from Apple

除非你确实保存这些更改,但是,持久性存储器保持不变。

所以这里是代码

NSError *error = nil; 
BOOL savedSuccessfully = [self.managedObjectContext save:&error]; 
if (!savedSuccessfully) { 
    NSLog(@"Could not save date change! Reason : %@", [error localizedDescription]); 
} 

您应经常保存并不仅退出应用程序时。看到这个答案:How often should I save to Core Data?

当我做了更改产品,删除一个或补充,我需要做任何事情再比如调用一些方法?

这取决于您在核心数据模型中的实体中设置的删除规则。

  • 无效:与已删除对象的关系中的任何其他对象将这些关系设置为零。对于多对多关系,已删除的对象将从集合中删除。
  • 级联:与对象有关系的任何其他对象也被删除。
  • 拒绝:如果有其他相关对象,则删除将被拒绝。
  • 无动作:任何与对象有关系的其他对象都将保持不变。
+0

只能部分回答我所有的问题 – LuckyLuke

+0

因此,每次进行更改时,您都需要在上下文对象中调用'save'?您不要依赖用户关闭应用程序时发生的保存上下文。 – LuckyLuke

+0

但该代码已添加到应用程序委托中。在应用程序中传播保存上下文是否正常? – LuckyLuke