【问题标题】:Core Data: change delete rule programmatically核心数据:以编程方式更改删除规则
【发布时间】:2016-07-23 04:53:03
【问题描述】:

我的 iOS 应用从第三方数据库下载记录,并使用 CoreData 将它们存储在本地。用户可以编辑存储记录的某些方面,例如除了来自数据库的注释之外,还可以添加用户注释。

有时,数据库会更新,我提供了刷新功能。我没有检查条目的哪些部分不同,而是暴力删除旧条目并用新条目替换。

但是,这也会删除用户注释。我尝试在刷新之前保存它们,并在插入新条目后重新添加它们,但是一旦原始条目被删除,由于“级联”删除规则,用户注释也会被删除。如果我将笔记的删除规则设置为“无操作”,则不会删除所有笔记。

所以我在想,是否可以在更新时临时更改用户注释的删除规则,使其不会被旧条目删除?

或者也许我的方法完全错误,还有更好的方法来处理这个问题?

更新:我在这里创建了一个后续问题:Change relationship of NSManagedObject to different context

【问题讨论】:

  • 那么为什么不更新或获取要删除的项目并只删除它们呢?
  • 我仍在考虑正确的方法。我仍然不明白的是,当我将用户注释的关系从旧条目更改为新条目,然后删除旧条目时,用户注释也消失了。当我输入这个(并且远离我的 Mac)时大声思考,我可能需要在更改关系后保存上下文,然后删除旧条目,然后再次保存。

标签: ios core-data


【解决方案1】:

模型实例化后不允许更改模型,版本控制除外。 我认为,您应该创建新实体,例如 CustomNote 并将一些唯一标识符存储到原始“记录”。然后只需按 id 检索此注释。 虽然它可能是一些更高级的关系方法,但这是最简单的。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
相关资源
最近更新 更多