ios - 保存时的核心数据性能问题

标签 ios sqlite core-data

我正在使用 NSSqliteStoreType 的核心数据在我的 iOS 应用程序中存储数据。 我需要将大量对象存储到数据库中。 为了提高核心数据的性能,我考虑了很多因素,例如:

  1. 批量保存
  2. 仅在for循环结束后保存
  3. 清除上下文以管理内存

但是保存 100k 个对象需要花费很多时间。请向我建议最佳实践,以提高核心数据的性能,同时保存大量数据。

最佳答案

  1. 您应该在非 UI 线程上执行导入,并将上下文直接绑定(bind)到持久存储协调器,而不是主上下文的子上下文
  2. 每插入数百个新对象,您就应该调用一次[managementObjectContext save],具体取决于对象大小和图形复杂性。请参阅this answer了解详情
  3. 您应该将第 2 步中的批处理包装在 @autoreleasepool block 中,并在保存后重置上下文,然后退出自动释放 block 。请参阅this answer

关于ios - 保存时的核心数据性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31722204/

相关文章:

ios - 安装 ios-buildkit 时出错

ios - 具有自定义类的搜索栏

sqlite - SQLite 中的系统表列表

ios - iCloud 存储在更改核心数据模型后损坏

ios - 如何在 Objective-C 中编辑 CSS 文件

objective-c - 如何在 XCode 4.2 中更改模型中不同 Controller 的数据

sql - SQLite3 不支持外键约束吗?

mysql - 如何在 Rails 中将我的数据库从 SQLite 更改为 MYSQL

iphone - 为什么除非我首先访问父类的描述,否则 NSManagedObject 关系对象无法正确加载?

ios5 - 核心数据 : move object from one persistent store to another