【问题标题】:Remove inserted but unsaved object from Core Data Managed Object Context从核心数据托管对象上下文中删除插入但未保存的对象
【发布时间】:2014-08-23 15:56:57
【问题描述】:
有没有办法删除已经插入上下文但尚未保存的单个托管对象?我想删除单个对象,而不是回滚整个上下文。我试过调用deleteObject:,但它会引发异常,因为根据核心数据,MOC 中尚不存在该对象。通过查看核心数据的插入对象属性,我肯定知道它已被插入,通过查看已删除对象,我知道它已被标记为删除。本质上,我想“取消插入”该对象。不接受先保存后删除。谢谢。
【问题讨论】:
标签:
ios
macos
core-data
nsmanagedobject
nsmanagedobjectcontext
【解决方案1】:
事实证明,在尚未持久化的对象上调用deleteObject: 是完全合法的。根据 Apple 的文档:
如果对象还没有被保存到持久存储中,它会从接收者中移除。
我的问题实际上是由于托管对象的关系而存在保留周期这一事实的结果。这已通过将有问题的关系设置为 nil 来解决。
注意:在您保存 MOC 之前,您刚刚插入然后删除的托管对象将同时出现在 MOC.insertedObjects 和 MOC.deletedObjects 中