Marcus Zarra在谈论设置应用程序的核心数据堆栈时,在他的核心数据手册中推荐的一件事就是在后台线程上调用addPersistentStoreWithType:configuration:URL:options:error:
,因为它可能需要不确定的时间(例如,运行迁移)。是否有一种简单的方法可以告诉MagicalRecord这样做?看起来它的所有setupCoreDataStack...
方法都在调用(可能是主线程)线程上执行所有操作。
我认为将顶级设置调用移到后台线程上是没有意义的,因为在至少创建了上下文之前从主线程开始使用MR是不安全的, ?我是否需要实现自己的setupCoreDataStackWithAsyncMigration
或某些事情?
答案 0 :(得分:1)
有一个wwdc2012示例代码,用于在后台线程(共享核心数据示例)上设置iCloud。您可以折射CoreDataController
以使用MagicalRecord(并忽略任何iCloud)。 IIRC已经存在锁定机制,以阻止其他线程在设置进行时访问存储。
在您离开该路线之前,请衡量在设备上启动所需的时间。如果启动速度足以满足您的需求,那么您可能希望坚持主线程上的设置。
迁移可能需要一些时间,但每次启动应用时都不会进行迁移。迁移时间取决于数据量和模型版本之间的更改复杂性。因此,再次判断是要花时间将迁移移动到后台线程还是让用户等待。