【发布时间】:2013-06-17 22:46:15
【问题描述】:
我的情况:我在Core Data 中有复杂的(24 个实体、许多关系和许多有序对多关系)模型。
现在假设,我有一个实体PlayList 和一个实体Song,并且在PlayList 中与Song 有一个有序的多对多关系。这种关系是相反的,两者都有一个nullify delete-rule。
我已经注意到,当我删除属于PlayList 的Song(我们称之为gangnam)时,这首歌并没有从关系中删除!!我尝试使用以下方法解决此问题:
- 我修复了 Apple 的与对多有序关系相关的错误,使用了优秀的:KCOrderedAccessorFix。顺便说一句,如果您使用其他解决方案,请小心,因为该错误不仅适用于
addAnObject部分,还适用于removeAnObject部分。 结果:好多了,但还是不行:我的关系仍然是gangnam:( - 我试过了:
processPendingChanges:不工作。
现在,
- 如果我
save我的上下文,Songgangnam将被删除。
所以,我的问题是:
如果我想nullify 关系,我必须save 我的上下文吗?
还是我错过了什么?
我试图用较小的模型重现“错误”,但在这种情况下,调用processPendingChanges 就足以建立nullify 的关系。所以,如果有人遇到同样的问题/情况,我很高兴知道我不是唯一一个与Core Data打架的人;)
【问题讨论】:
-
由于某种原因,实体的图形不连贯(我猜
CoreData的一些错误,关系及其逆关系没有正确维护)。因此,它拒绝删除该对象。如果我保存,它首先使图形连贯,然后可以删除对象。
标签: macos cocoa cocoa-touch core-data