Cocoa – 核心数据对象图

Posted

技术标签:

【中文标题】Cocoa – 核心数据对象图【英文标题】:Cocoa – Core Data object graph 【发布时间】:2012-02-06 11:12:03 【问题描述】:

如何处理以下对象的删除?我的删除规则应该是什么样的?

这是我的对象图的样子:

老板

Boss-Department 是多对多的关系 如果 Boss 被删除, 属于那个老板的部门应该被删除(但是 部门与本Boss的关系应删除)

部门

Department-Employee 具有多对多关系 部门-老板是多对多关系 如果一个部门 被删除,属于该部门的员工应该是 删除如果他们与任何其他部门没有关系

员工

Employee-Department 是多对多的关系 永远不会直接删除员工(仅通过删除部门)。哦,幸福的生活!

【问题讨论】:

【参考方案1】:

在这种情况下,您的对象的删除规则应该这样处理

老板-部门->无效

部门-员工 -> 拒绝

部门老板 -> 无效

这是 Apple 对删除规则的解释

拒绝:如果关系目的地至少有一个对象, 则无法删除源对象。例如,如果你想 删除一个部门,您必须确保该部门的所有员工 部门首先被转移到其他地方(或被解雇!)否则 部门不能删除。

Nullify:设置反比关系 目的地的对象为空。例如,如果您删除一个 部门,将所有当前成员的部门设置为空。 这仅在员工的部门关系时才有意义 是可选的,或者如果您确保为每个 在下一次保存操作之前的员工。

级联:删除 关系目的地的对象。例如,如果您 删除一个部门,解雇该部门的所有员工 同时。

No Action: 对目的地的对象不做任何事情 关系。例如,如果您删除一个部门,请保留所有 员工本来的样子,即使他们仍然相信自己属于 那个部门。

欲了解更多信息,请查看CoreData Programming Guide

【讨论】:

以上是关于Cocoa – 核心数据对象图的主要内容,如果未能解决你的问题,请参考以下文章

iPhone RestKit 是不是可以将核心数据对象图转换为 JSON?

带有核心数据的 Cocoa 绑定不更新所有列

捕获所有 Objective-C 消息并获取 Cocoa 运行时中的对象列表

如何从核心动画对象中引用图层?

在代码中使用核心数据 - Objective-C/Cocoa

UML核心视图介绍