iOS:检查coredata对象是否仍然存在?
我有两个不同的视图控制器的问题。每个都在我的应用程序的选项卡栏中。一个视图控制器影响另一个视图控制器。在我的选项卡栏项目1(视图控制器1)中,我编辑所有数据库对象。您可以在我的数据库中添加、删除和编辑实体 在视图控制器2中,您可以选择这些实体,向这些实体添加子类别,并对其进行编辑。但是,如果您位于视图控制器2中的某个实体内,请切换回视图控制器1,删除该实体并切换回视图控制器2,我的应用程序将崩溃。当然,因为这个视图控制器(刚刚删除的实体)的模型已经不存在了。那么我如何在我的视图中检查它呢?这不起作用:iOS:检查coredata对象是否仍然存在?,ios,objective-c,core-data,Ios,Objective C,Core Data,我有两个不同的视图控制器的问题。每个都在我的应用程序的选项卡栏中。一个视图控制器影响另一个视图控制器。在我的选项卡栏项目1(视图控制器1)中,我编辑所有数据库对象。您可以在我的数据库中添加、删除和编辑实体 在视图控制器2中,您可以选择这些实体,向这些实体添加子类别,并对其进行编辑。但是,如果您位于视图控制器2中的某个实体内,请切换回视图控制器1,删除该实体并切换回视图控制器2,我的应用程序将崩溃。当然,因为这个视图控制器(刚刚删除的实体)的模型已经不存在了。那么我如何在我的视图中检查它呢?这不起
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if(!self.myEntity){
self.isNotExistingAnymore = YES;
NSLog(@"YES;");
}
}
NSManagedObject
有一个isDeleted
方法,如果对象
已在托管对象上下文中标记为删除
如果已保存上下文,因此对象实际上已从
持久存储,则其managedObjectContext
方法返回nil
因此,这包括两种情况:
if (self.myObject.isDeleted || self.myObject.managedObjectContext == nil) ...
但是如果我读对了文档,它会说:“返回一个布尔值,指示在下一次保存过程中是否删除接收器”。但当视图进入后台时,我会保存在所有视图控制器中。因此,当视图控制器2重新出现时,其模型已被删除并保存在视图控制器1中。这在所有情况下都有效吗?我认为这涵盖了这两种情况(如果保存和尚未保存,我是否正确?):if([self.myEntity isDeleted]| |![((AppDelegate*)[[UIApplication sharedApplication]delegate])。managedObjectContext existingObjectWithID:self.myEntity.objectID error:NULL]){}@MichiZH应该有效。请参阅更新的答案,了解在类似情况下对我有效的替代方案。