更新核心数据实体

时间:2012-05-24 09:16:51

标签: iphone objective-c ios core-data entity

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

1 个答案:

答案 0 :(得分: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?

  

当我对产品进行更改时,删除一个或添加,是否需要执行任何操作,例如调用某些方法?

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

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