CoreData关系混乱

时间:2016-08-21 12:08:14

标签: ios core-data

假设我有两个名为Book and Publisher的实体 书有属性: - 作家,头衔。 2. Publisher具有以下属性: - 名称,类型 我设置了一个关系: - Publisher to Book(一对多并将其设置为反向关系)

选择了关系后,我可以在DataModal检查器中看到一个名为Delete Rule的行,其中包含三个选项1. Nullify 2. Cascade 3. Deny

这些是什么,我只想在删除最后一本书

时才删除Publisher实体

提前谢谢你。 我只是一个初学者 :)

1 个答案:

答案 0 :(得分:1)

文档很好地解释了这些删除规则

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

  

关系删除规则

     

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

     

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

     

例如,如果要删除部门,则必须确保该部门   该部门的所有员工首先转移到其他地方   (或解雇!);否则,部门无法删除。

     

Nullify删除对象之间的关系但不删除   对象。

     

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

     

Cascade删除关系目的地时的对象   你删除了源。

     

例如,如果您删除部门,请解雇所有员工   那个部门在同一时间。

     

无操作对目标处的对象不执行任何操作   关系。

     

例如,如果删除部门,请将所有员工保留为   他们是,即使他们仍然相信他们属于那个部门。

     

应该清楚的是,这些规则中的前三个是有用的   不同的情况。对于任何给定的关系,由您决定   根据业务逻辑选择哪个最合适。   为什么No Action规则可能有用,这是不太明显的,因为如果   你使用它,可以将对象图留在一个   不一致的状态(与删除关系的员工   省)。

     

如果您使用“无操作”规则,则由您来确保   保持对象图的一致性。你有责任   将任何反比关系设置为有意义的值。这可能是   在你有多对多关系的情况下受益   可能是目的地的大量物品。