Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
Core data 核心数据对象在应用程序WillResignactive上正常,但具有<;故障>;论生态测量的应用_Core Data_Save - Fatal编程技术网

Core data 核心数据对象在应用程序WillResignactive上正常,但具有<;故障>;论生态测量的应用

Core data 核心数据对象在应用程序WillResignactive上正常,但具有<;故障>;论生态测量的应用,core-data,save,Core Data,Save,在使用核心数据时,我发现一个问题,即我使用[context save]保存X个对象,在我关闭应用程序并再次打开它之前,一切都正常,因此所有相同的对象都有“data:fault”。我尝试在applicationWillResignActive上保存上下文,只是为了确保堆栈已保存,但没有效果。当我在应用程序重新激活期间检查对象时,它们是良好的,但在应用程序变为激活时检查它们会显示故障。我错过了什么?我不确定这些核心数据对象在应用程序退出时是如何出错的。因此,出错是核心数据节省内存的一种方式,直到您需

在使用核心数据时,我发现一个问题,即我使用[context save]保存X个对象,在我关闭应用程序并再次打开它之前,一切都正常,因此所有相同的对象都有“data:fault”。我尝试在applicationWillResignActive上保存上下文,只是为了确保堆栈已保存,但没有效果。当我在应用程序重新激活期间检查对象时,它们是良好的,但在应用程序变为激活时检查它们会显示故障。我错过了什么?我不确定这些核心数据对象在应用程序退出时是如何出错的。

因此,出错是核心数据节省内存的一种方式,直到您需要这些对象并在我最不期望的地方找到答案:

“故障处理是透明的,您不必执行提取来实现故障。如果在某个阶段访问了故障对象的持久属性,则核心数据会自动检索该对象的数据并初始化该对象(有关不会引发故障的方法列表,请参阅NSManagedObject类参考)。此过程通常称为触发故障。如果您向Department对象发送一条消息以获取(例如)其名称,则会触发故障,在这种情况下,Core Data会执行一次获取操作,以检索对象的所有属性

点火故障 核心数据在必要时(当访问故障的持久属性时)自动触发故障。但是,单独触发故障可能效率低下,并且有更好的策略从持久存储获取数据(请参阅“使用SQLite存储进行批故障处理和预取”)。有关如何有效处理故障和关系的更多信息,请参阅“获取托管对象”

当触发故障时,如果数据在缓存中可用,则核心数据不会返回到存储区。缓存命中后,将故障转换为已实现的托管对象的速度非常快,基本上与托管对象的正常实例化相同。如果数据在缓存中不可用,核心数据会自动执行对存储区的提取fault对象;这会导致往返到持久性存储以获取数据,并且再次将数据缓存到内存中

这一点的推论是,对象是否为故障与是否已从存储中检索到其数据不同。对象是否为故障仅仅意味着给定的托管对象是否已填充其所有属性并准备好使用。如果需要确定对象是否为故障,可以发送it在不触发故障的情况下发送isFault消息。如果isFault返回否,则数据必须在内存中。但是,如果isFault返回是,则并不意味着数据不在内存中。数据可能在内存中,也可能不在内存中,这取决于影响缓存的许多因素。 "