如何安全删除未保存的托管对象?

时间:2011-09-14 05:24:39

标签: iphone ios core-data nsmanagedobject nsmanagedobjectcontext

我的应用程序为“文章文章”提供某种编辑器功能。我的编辑器有两种模式。当编辑器加载时,如果尚未通过初始化程序传入,则创建一个托管对象。当用户取消新编辑时,我从上下文中删除该对象。但是,有时候,我得到一个关于没有插入上下文的对象的错误,有时候我没有。那么,以下代码是检查托管对象实例是否已插入上下文的好方法吗?

if ([[self.workingManagedObjectInstance managedObjectContext] isEqual:self.managedObjectContext]){

}

我的理论是,如果[self.workingManagedObjectInstance managedObjectContext]nil,则表示尚未插入且不会为“isEqual”。这是检查我们是否删除尚未插入的对象的有效方法吗?

2 个答案:

答案 0 :(得分:1)

如果可能,应始终使用相同的托管对象上下文,而不是它的各种实例。如果您有多个视图控制器,则应将相同的上下文作为引用传递。比较上下文并不会告诉您有关实体实例存在的任何信息。

以通常的方式初始化对象

myEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" 
   inManagedObjectContext:self.managedObjectContext];

你可以检查它是否存在并用一个简单的

删除它
if (myEntity) { 
   [self.managedObjectContext deleteObject:myEntity];
}

答案 1 :(得分:0)

就我而言,我意识到我应该在创建托管对象的初始实例后保存我的上下文。由于我仍然有一个参考,我以后能够删除它。

相关问题