我正在使用 NSSqliteStoreType 的核心数据在我的 iOS 应用程序中存储数据。 我需要将大量对象存储到数据库中。 为了提高核心数据的性能,我考虑了很多因素,例如:
- 批量保存
- 仅在for循环结束后保存
- 清除上下文以管理内存
但是保存 100k 个对象需要花费很多时间。请向我建议最佳实践,以提高核心数据的性能,同时保存大量数据。
最佳答案
- 您应该在非 UI 线程上执行导入,并将上下文直接绑定(bind)到持久存储协调器,而不是主上下文的子上下文
- 每插入数百个新对象,您就应该调用一次
[managementObjectContext save]
,具体取决于对象大小和图形复杂性。请参阅this answer了解详情 - 您应该将第 2 步中的批处理包装在
@autoreleasepool
block 中,并在保存后重置上下文,然后退出自动释放 block 。请参阅this answer
关于ios - 保存时的核心数据性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31722204/