我遇到两个不同视图控制器的问题。每个都在我的应用程序的标签栏中。一个视图控制器影响另一个视图控制器。在我的标签栏项目1(视图控制器1)中,我编辑了所有数据库对象。您可以在我的数据库中添加,删除和编辑实体。
在视图控制器2中,您可以选择这些实体并将子类别添加到这些实体并进行编辑。但是如果你在视图控制器2中的某个实体内,切换回视图控制器1,删除该实体并切换回视图控制器2,我的应用程序崩溃。当然,因为这个视图控制器(刚刚删除的实体)的模型不再存在。那么如何在viewWillAppear中检查呢?这不起作用:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if(!self.myEntity){
self.isNotExistingAnymore = YES;
NSLog(@"YES;");
}
}
答案 0 :(得分:9)
NSManagedObject
有isDeleted
方法,如果对象返回YES
已在托管对象上下文中标记为删除。
如果已保存上下文,则实际上已从中删除对象
持久性存储,然后其managedObjectContext
方法返回nil
。
所以这涵盖了两种情况:
if (self.myObject.isDeleted || self.myObject.managedObjectContext == nil) ...