Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:检查coredata对象是否仍然存在?_Ios_Objective C_Core Data - Fatal编程技术网

iOS:检查coredata对象是否仍然存在?

iOS:检查coredata对象是否仍然存在?,ios,objective-c,core-data,Ios,Objective C,Core Data,我有两个不同的视图控制器的问题。每个都在我的应用程序的选项卡栏中。一个视图控制器影响另一个视图控制器。在我的选项卡栏项目1(视图控制器1)中,我编辑所有数据库对象。您可以在我的数据库中添加、删除和编辑实体 在视图控制器2中,您可以选择这些实体,向这些实体添加子类别,并对其进行编辑。但是,如果您位于视图控制器2中的某个实体内,请切换回视图控制器1,删除该实体并切换回视图控制器2,我的应用程序将崩溃。当然,因为这个视图控制器(刚刚删除的实体)的模型已经不存在了。那么我如何在我的视图中检查它呢?这不起

我有两个不同的视图控制器的问题。每个都在我的应用程序的选项卡栏中。一个视图控制器影响另一个视图控制器。在我的选项卡栏项目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应该有效。请参阅更新的答案,了解在类似情况下对我有效的替代方案。