Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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_Swift_Xcode - Fatal编程技术网

Ios 获取CoreData时由于内存问题而终止

Ios 获取CoreData时由于内存问题而终止,ios,swift,xcode,Ios,Swift,Xcode,我正在尝试获取CoreData。我知道这是很多数据,我已经在使用不同的实体来保存数据。所以基本上我只需要读取“旧数据”。问题是,当我试图获取这些数据时,我的应用程序崩溃了,因为内存爆炸了。有人知道如何获取这些数据吗?也许一次只能获取其中的一半 我知道这是很多数据,我已经在使用不同的实体来保存数据 我看不到使用不同实体和内存使用之间的关系。如果您遵循适用于核心数据的内存管理规则,除非您有一些具有数千种关系的奇怪设置,否则这一点都不重要 基本规则: 如果在循环中执行操作,请确保释放自动释放池。 一旦

我正在尝试获取CoreData。我知道这是很多数据,我已经在使用不同的实体来保存数据。所以基本上我只需要读取“旧数据”。问题是,当我试图获取这些数据时,我的应用程序崩溃了,因为内存爆炸了。有人知道如何获取这些数据吗?也许一次只能获取其中的一半

我知道这是很多数据,我已经在使用不同的实体来保存数据

我看不到使用不同实体和内存使用之间的关系。如果您遵循适用于核心数据的内存管理规则,除非您有一些具有数千种关系的奇怪设置,否则这一点都不重要

基本规则:

如果在循环中执行操作,请确保释放自动释放池。 一旦不再需要NSManagedObject实例,并且它们的数量会影响内存使用,您可以通过在上下文上调用refreshObject:mergeChanges:将它们转化为故障。 您还可以在上下文中调用reset使所有获取的托管对象无效,请记住,在调用reset之后,您不应该使用这些无效对象。 注意循环引用-基本上,通过关系绑定的对象具有这些类型的引用,您可能需要手动将它们转换为错误/重置上下文,或者干脆完全放弃托管对象上下文。 获取数据的提示:

如果您需要获取大量数据,并且这是可能的,请使用Dictionary Result Type,因为Dictionary占用的内存远远少于托管对象实例。 将fetchLimit应用于NSFetchRequest,以限制正在提取的对象数。将其与fetchOffset组合以获得数据窗口。 还需要考虑“FETCHBACCHESS”。
fetchLimit属性?您有多少数据?你能显示堆栈跟踪吗?