我在coredata中删除规则时遇到了一个奇怪的问题。我的数据模型并不复杂。我在这里只详述了元素之间的关系:
A
----------
has_many B (optional, delete rule : Cascade)
has_many C (optional, delete rule : Cascade)
B
----------
has C (optional, delete rule : Cascade)
inv_A (delete rule : Nullify)
C
----------
has B (optional, delete rule : Nullify)
inv_A (delete rule : Nullify)
删除B时,不删除相关的C.这就像级联删除规则不起作用......
你对我做错了什么有暗示吗?
感谢您的帮助
这只是一个重新审核问题。愚蠢的问题......永远不要忘记: A)保存后在基数中重新获取数据 B)使用新的获取结果重新加载表(或使用NSFetechedResultController)
答案 0 :(得分:1)
删除规则始终适用于删除其他实体。因此,当您删除C
对象时,has C
关系将确保同时删除B
。反过来说,has B
关系只设置为无效,这就是它的作用。
为了澄清这种情况,请这样考虑一下:如果你只有一个关系,比如B引用C,意味着B有一个C类对象的字段。删除规则的唯一明智之处是解决如果对象指向应该删除该字段应该怎么做的问题。