我将数据导入Core Data,发现保存操作很慢.使用iOS模拟器,我看到sqlite-wal文件的增长和增长,直到其超过7GB的大小.
我输入约5000个记录,约10个字段.这不是很多的数据.
我插入的每个对象与各种其他对象(总共6个关系)具有一对一的关系.所有这些记录合计少于20个字段.没有图像或任何二进制数据或任何可以看到的东西,这将证明为什么WAL文件的最终大小是如此之大.
我读了描述wal文件的sqlite文档,我看不出这可能如何发生.源数据不超过50 MB.
我的应用程序是多线程的.
我在执行导入(创建和保存核心数据对象)的后台线程中创建一个托管对象上下文.
没有在这里编写代码,有没有人遇到这个?任何人都有一个想法,我应该检查什么.代码不是超级简单,所有的部分都需要时间来输入,所以让我们从一般的想法开始.
我会让任何让我走向正确的人.
额外信息:
>我已经禁用了撤销管理器的上下文,因为我不需要(我认为默认情况下在iOS上是零,但我显式设置为nil).
>我只在整个循环完成之后调用保存,所有被管理的对象都在ram中(ram达到100 MB btw).
>核心数据对象的循环和创建只需要5秒左右.在写入文件时,保存需要花费近3分钟的时间.