MagicalRecord:在后台线程上设置核心数据堆栈
问题描述:
Marcus Zarra在他的核心数据手册中建议在设置应用程序的核心数据栈时,其中一项是在后台线程上调用addPersistentStoreWithType:configuration:URL:options:error:
,因为它可以采取不确定的时间量(例如,运行迁移)。有没有简单的方法告诉MagicalRecord来做到这一点?它看起来像它的所有setupCoreDataStack...
方法执行调用(大概是主)线程上的一切。MagicalRecord:在后台线程上设置核心数据堆栈
我认为将*设置调用移动到后台线程上并不合理,因为直到至少创建了上下文为止,从主线程开始使用MR并不安全,对?我是否需要实施我自己的setupCoreDataStackWithAsyncMigration
或其他?
答
有一个wwdc2012示例代码用于在后台线程(Shared Core Data示例)上设置iCloud。您可以折射CoreDataController
以使用MagicalRecord(并忽略任何iCloud)。 IIRC锁定机制在安装过程中阻止其他线程访问存储区已经存在。
在你走下去之前,测量在设备上启动所需的时间。如果启动速度足够满足您的需求,那么您可能需要坚持主线程上的设置。
迁移可能需要一些时间,但每次应用启动时都不会发生迁移。迁移时间取决于数据量和模型版本之间变化的复杂程度。因此,再次投入时间将迁移迁移到后台线程或让用户等待是一种判断。