iphone - Core Data iPhone 我应该多久调用一次[managementObjectContext save :&error] when doing 50k record insert?

标签 iphone core-data ipad

我会偶尔将 XML 导入到核心数据中。我将添加大约 50k 个实体。我的问题是我应该多久调用一次 [managementObjectContext save:&error]。对于添加的每个新实体,或者每个 x 实体,或者只是在 50k 导入结束时?

我目前正在为每个实体调用它,并尝试只为大约每 10k 执行一次,导入速度大幅提高,但在第一个 30k 之后,它会崩溃:

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

在我花太多时间尝试诊断那里发生的情况之前,我想我应该检查一下是否可以不对每个实体调用 save ?

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

最佳答案

不要保存每个实体,这样既浪费又低效。最佳位置取决于您的数据,但它绝对大于每个条目且小于 50K :)

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

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

关于iphone - Core Data iPhone 我应该多久调用一次[managementObjectContext save :&error] when doing 50k record insert?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2664729/

相关文章:

iphone - 基于 Tabbar 的应用程序中的 ABPeoplePickerNavigationController

xcode - 命令行工具核心数据教程

swift - CoreData - 一对多关系

ios - 为什么我的WKWebviews在模拟器上可以运行,但在iPad上却无法拉出文件?

iphone - 如何使用 Objective C 在两台机器之间创建远程连接

javascript - iPad Safari 弹出问题

iphone - ShareKit twitter 和 UIWebView 的问题(无键盘)

iphone - iPhone上锁定的sqlite文件

ios - 在 iOS 模拟器中截屏

ios - 实体类的调用方法 - CoreData : Swift 2. 0