从Core Data Managed Object Context中删除已插入但未保存的对象

时间:2014-07-02 18:15:14

标签: ios macos core-data nsmanagedobject nsmanagedobjectcontext

有没有办法删除已插入上下文但尚未保存的单个托管对象?我想删除单个对象,而不是回滚整个上下文。我尝试过调用deleteObject:,但它会引发异常,因为根据核心数据,该对象尚未存在于MOC中。通过查看核心数据的插入对象属性,我肯定知道它已被插入并通过查看已删除的对象,我知道它已被标记为删除。基本上我想" uninsert"物体。先保存然后删除是不可接受的。感谢。

1 个答案:

答案 0 :(得分:9)

事实证明,在尚未持久化的对象上调用deleteObject:是完全合法的。根据Apple的文档:

  

如果对象尚未保存到持久性存储中,则只需将其从接收方中删除。

我的问题实际上是由于托管对象的关系导致保留周期这一事实的结果。通过将有问题的关系设置为nil来解决这个问题。

注意:在您保存MOC之前,您刚刚插入的托管对象随后会被删除MOC.insertedObjectsMOC.deletedObjects