Nic*_*ing 3 core-data objective-c
在我的核心数据模型中,我有一个配置文件实体,其中包含多个多对多关系.其中一个是'寻找'.许多配置文件可以寻找许多不同的东西.
Core Data中的关系将其Delete Rule设置为Nullify.我想要发生的是,当删除个人资料时,所有搜索条目都不受影响,并且当删除搜索条目时,应该从每个人的个人资料中删除它.
这似乎我应该对Profile和Looking For之间关系的两个方向都做不动作,但是从谷歌搜索和阅读文档,我不确定这是否正确,事实上,没有动作似乎是你几乎要做的事情除非你进行大量优化,否则永远不要使用.这是文档:
无操作 对关系目的地的对象不执行任何操作.例如,如果您删除某个部门,请将所有员工保持原样,即使他们仍然认为他们属于该部门.
没有使用No Action规则的原因就不那么明显了,因为如果你使用它,你就有可能让对象图处于不一致的状态(员工与被删除的部门有关系).
如果使用"无操作"规则,则需要确保维护对象图的一致性.您有责任将任何反向关系设置为有意义的值.在您具有多对多关系并且目的地可能存在大量对象的情况下,这可能是有益的.
所以我觉得我应该使用Nullify(我目前正在使用),但是Nullify的文档说:
Nullify 将目标对象的反向关系设置为null.例如,如果删除部门,请将所有当前成员的部门设置为null.只有当员工的部门关系是可选的,或者您确保在下一次保存操作之前为每个员工设置新部门时,这才有意义.
现在,正如所写,这似乎意味着如果你删除一个配置文件,那个与该配置文件相关联的每个寻找将与配置文件清空,即从所有配置文件中删除.
在这种情况下,正确的做法是什么?
"Nullify"是正确的.假设个人资料p1是有关展望福尔l1,l2,l3.如果p1被删除,关系设置为抵消,则仅
p1会从逆关系取出l1,l2,l3.
随着"不采取行动",在逆关系l1,l2,l3将保持不变,因此,指向一个不存在的元素p1.您必须p1
从这些对象中"手动" 删除.
换句话说,"Nullify"是保持对象图一致的最简单规则:如果a与之相关b,并且b被删除,那么b就不再相关a了.
| 归档时间: |
|
| 查看次数: |
1781 次 |
| 最近记录: |