MagicalRecord:在后台线程上设置核心数据堆栈

时间:2014-02-28 14:19:22

标签: magicalrecord

Marcus Zarra在谈论设置应用程序的核心数据堆栈时,在他的核心数据手册中推荐的一件事就是在后台线程上调用addPersistentStoreWithType:configuration:URL:options:error:,因为它可能需要不确定的时间(例如,运行迁移)。是否有一种简单的方法可以告诉MagicalRecord这样做?看起来它的所有setupCoreDataStack...方法都在调用(可能是主线程)线程上执行所有操作。

我认为将顶级设置调用移到后台线程上是没有意义的,因为在至少创建了上下文之前从主线程开始使用MR是不安全的, ?我是否需要实现自己的setupCoreDataStackWithAsyncMigration或某些事情?

1 个答案:

答案 0 :(得分:1)

有一个wwdc2012示例代码,用于在后台线程(共享核心数据示例)上设置iCloud。您可以折射CoreDataController以使用MagicalRecord(并忽略任何iCloud)。 IIRC已经存在锁定机制,以阻止其他线程在设置进行时访问存储。

在您离开该路线之前,请衡量在设备上启动所需的时间。如果启动速度足以满足您的需求,那么您可能希望坚持主线程上的设置。

迁移可能需要一些时间,但每次启动应用时都不会进行迁移。迁移时间取决于数据量和模型版本之间的更改复杂性。因此,再次判断是要花时间将迁移移动到后台线程还是让用户等待。