Core Data

发布
更新
字数 236
阅读 2 分钟
阅读量 1082

Core Data 实践备忘

Delete rule

定义当拥有该关联(relationship)的对象(owner)被删除时要如何处理。 例如有两个实体:用户 User、帖子 Post ,是一对多的关系,且帖子必须归属于某一个用户,那么我们需要当删除用户时,同时删除该用户的帖子,而删除帖子时不需要删除用户。

因此我们需要:

  1. 定义用户到帖子的关联 poststo many,删除规则为 cascade
  2. 定义反向关联,帖子到用户的关联 userto one,删除规则为 no action 即可

参考:https://cocoacasts.com/core-data-relationships-and-delete-rules

Observer

使用 willSave 更新对象本身或存在关联时,可能会反复调用该方法造成死循环,可以通过 setPrimitiveValue(_, forKey) 解决

extension Item {
    override func willSave() {
      super.willSave()
      setPrimitiveValue(Date(), forKey: #keyPath(Item.lastModifiedDate))
  }
}

未完待续……