0

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

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

} 

我的理论是,如果[self.workingManagedObjectInstance managedObjectContext]nil,那么它并没有被插入并不会“isEqual”。这是检查我们没有删除未被插入的对象的有效方法吗?

回答

0

在我的情况下将其删除初始化对象,我意识到,我应该节省在创建管理对象的初始实例之后创建我的上下文。由于我仍然参考它,因此我可以稍后删除它。

1

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

后,您通常的方式

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

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

if (myEntity) { 
    [self.managedObjectContext deleteObject:myEntity]; 
} 
相关问题