核心数据iPhone在执行50k记录插入时,我应该多久调用[managedObjectContext save:& error]?

时间:2010-04-19 01:20:23

标签: iphone core-data ipad

我将从XML进入核心数据。我有大约50k个实体将被添加。我的问题是我应该多久调用[managedObjectContext save:& error]。对于添加的每个新实体,还是每个x实体,或者只是在50k导入的末尾?

我目前正在为每个实体调用它,并尝试仅在每10k左右进行一次,并且导入速度大幅提升但在第一个30k之后它会崩溃:

*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <NSCFSet: 0x13e760> was mutated while being enumerated.'

在我花费太多时间试图诊断正在发生的事情之前,我想我会检查是否可以不在每个实体上调用保存?

调用save之前的实体数是否受这些实体正在使用的内存量的限制?

1 个答案:

答案 0 :(得分:4)

不要保存每个实体,这是浪费和低效的。最佳位置取决于您的数据,但它肯定比每个条目都要大且小于50K:)

我建议从每1k开始,并在进一步进入应用程序开发时从那里进行调整。

至于您所看到的错误,它与保存数据几乎没有任何关系。在迭代它时,您正在删除或添加对象到可变数组。由于显而易见的原因,这是不允许的。