【发布时间】:2013-11-06 20:17:28
【问题描述】:
在我的核心数据模型中,我有一个 Profile 实体,其中包含多个多对多关系。其中之一是“寻找”。许多个人资料可能会寻找许多不同的东西。
Core Data 中的关系将其删除规则设置为无效。我想要发生的是,当一个配置文件被删除时,所有正在寻找的条目都不会受到影响,而当一个正在寻找的条目被删除时,它应该从每个人的配置文件中删除。
这似乎我应该对 Profile 和 Find For 之间关系的两个方向都执行 No Action,但是通过谷歌搜索和阅读文档,我不确定这是正确的,实际上 No Action 似乎是什么除非您进行大量优化,否则您几乎永远都不想使用。这是文档:
无操作 对目的地的对象不做任何事情 关系。例如,如果您删除一个部门,则保留所有 员工,即使他们仍然相信自己属于那个 部门。
“无操作”规则可能有用的原因不太明显,因为如果 你使用它你有可能将对象图留在一个 不一致的状态(与已删除的员工有关系的员工 部门)。
如果您使用 No Action 规则,则由您来确保对象图的一致性 得到维护。您负责将任何反向关系设置为有意义的值。 这在您有一对多关系并且可能存在 目的地有大量物体。
所以我觉得我应该改用 Nullify(我目前正在使用),但 Nullify 的文档说:
无效 将目标对象的逆关系设置为 空值。例如,如果您删除一个部门,请将部门设置为 所有当前成员为空。这只有在 员工的部门关系是可选的,或者如果您确保 之前为每个员工设置了一个新部门 下次保存操作。
现在,正如所写的那样,这似乎意味着如果您删除个人资料,与该个人资料相关联的每个“寻找”都将清空其与个人资料的关系,即从所有个人资料中删除。
在这种情况下正确的做法是什么?
【问题讨论】:
标签: objective-c core-data