我使用基于Xcode 6文档的应用程序和OS X的核心数据模板,后者在幕后设置核心数据堆栈(没有可见的初始化代码)。现在我需要执行一个简单的核心数据轻量级迁移,我已经创建了新版本的模型并将其激活。为了能够传递迁移权限,我是否真的必须手动实现核心数据堆栈初始化?如果是,核心数据堆栈应该在哪里初始化,以便它将覆盖默认值?
答案 0 :(得分:2)
您在评论中提到您正在使用基于文档的应用模板 - 这是原始问题中遗漏的重要细节。
使用此模板,您使用的是NSPersistentDocument
的子类。如果您要使用NSPersistentDocument
配置迁移,则需要覆盖configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:
。您的实现将使用一组不同的选项调用super
的实现。像这样:
override func configurePersistentStoreCoordinatorForURL(url: NSURL!, ofType fileType: String!, modelConfiguration configuration: String?, storeOptions: [NSObject : AnyObject]!, error: NSErrorPointer) -> Bool {
let options = [ NSMigratePersistentStoresAutomaticallyOption : true,
NSInferMappingModelAutomaticallyOption: true ]
return super.configurePersistentStoreCoordinatorForURL(url, ofType: fileType, modelConfiguration: configuration, storeOptions: options, error: error)
}