2016-08-21 176 views
0

假设我有两个名为Book和Publisher的实体 1. Book有属性: - writer,title。 2.出版商拥有的属性: - 名称,类型 我设置的关系: - 出版商在图书(一对多并将其设置为反比关系)CoreData关系混淆

选中我可以在DataModal检查员看到关系的行称为删除规则有三个选项1.废止2级联3.拒绝

这是什么意思,我想删除发布者实体只有当我删除的最后一本书

预先感谢您。 我只是一个初学者 :)

回答

1

的文档做好解释这些删除规则

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/HowManagedObjectsarerelated.html

关系删除规则

的关系的删除规则指定应该发生什么如果 尝试删除源对象。请注意如果尝试进行 的措辞。如果关系的删除规则设置为拒绝,则可能是 源对象不会被删除。再考虑一下 部门的员工关系,以及不同的 删除规则的影响。

拒绝如果关系目标 (员工)中至少有一个对象,请不要删除源对象(部门)。

例如,如果你想删除一个部门,你必须确保 该部门的所有员工首先被转移到别处 (或被解雇!);否则,该部门不能被删除。

抵消删除对象之间的关系,但不删除 任一对象。

仅当员工 的部门关系是可选的,或者您确保在下一次保存操作之前为员工的每个 设置一个新部门时,这才有意义。

在级联时 删除源关系的目标删除的对象。

例如,如果你删除一个部门,解雇所有员工 同时该部门。

无措施对 关系的目的地处的对象不做任何事情。

例如,如果您删除某个部门,请将所有员工都留为 ,即使他们仍然认为他们属于该部门。

应该清楚的是,这些规则的前三个在 不同的情况下是有用的。对于任何给定的关系,取决于业务逻辑,由您决定选择哪一个最合适。 这是不太明显的为什么无动作规则可能会被使用,因为如果您使用 ,可能会使对象图保持在 不一致的状态(员工与已删除的 部门有关系)。

如果使用“无操作”规则,则由您来确保维护对象图的一致性。您有责任将 设置为与有意义值相反的关系。这可能是 受益于您有多对多关系的情况,并且 可能是目标上的大量对象。