【问题标题】:Cocoa – Core Data object graphCocoa – 核心数据对象图
【发布时间】:2012-02-06 11:12:03
【问题描述】:
如何处理以下对象的删除?我的删除规则应该是什么样的?
这是我的对象图的样子:
老板
- Boss-Department 是多对多的关系
- 如果 Boss 被删除,
属于那个老板的部门应该不被删除(但是
部门与本Boss的关系应删除)
部门
- Department-Employee 具有多对多关系
- 部门-老板是多对多关系
- 如果一个部门
被删除,属于该部门的员工应该是
删除如果他们与任何其他部门没有关系
员工
- Employee-Department 是多对多的关系
- 永远不会直接删除员工(仅通过删除部门)。哦,幸福的生活!
【问题讨论】:
标签:
cocoa
core-data
object-graph
【解决方案1】:
在这种情况下,您的对象的删除规则应该这样处理
老板-部门->无效
部门-员工 -> 拒绝
部门老板 -> 无效
这是 Apple 对删除规则的解释
拒绝:如果关系目的地至少有一个对象,
则无法删除源对象。例如,如果你想
删除一个部门,您必须确保该部门的所有员工
部门首先被转移到其他地方(或被解雇!)否则
部门不能删除。
Nullify:设置反比关系
目的地的对象为空。例如,如果您删除一个
部门,将所有当前成员的部门设置为空。
这仅在员工的部门关系时才有意义
是可选的,或者如果您确保为每个
在下一次保存操作之前的员工。
级联:删除
关系目的地的对象。例如,如果您
删除一个部门,解雇该部门的所有员工
同时。
No Action: 对目的地的对象不做任何事情
关系。例如,如果您删除一个部门,请保留所有
员工本来的样子,即使他们仍然相信自己属于
那个部门。
欲了解更多信息,请查看CoreData Programming Guide