OS X 上的核心数据轻度迁移
Core Data light migration on OS X
我正在使用 Xcode 6 基于文档的应用程序和 OS X 的核心数据模板,它在后台设置核心数据堆栈(没有可见的初始化代码)。现在我需要执行一个简单的核心数据轻量级迁移,我已经创建了新的版本化模型并激活了它。我真的必须手动实现核心数据堆栈初始化才能通过迁移权限吗?如果是,核心数据堆栈应该在哪里初始化,以便覆盖默认值?
您在评论中提到您正在使用基于文档的应用程序模板——这是原始问题中遗漏的一个关键细节。
对于此模板,您使用的是 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)
}
我正在使用 Xcode 6 基于文档的应用程序和 OS X 的核心数据模板,它在后台设置核心数据堆栈(没有可见的初始化代码)。现在我需要执行一个简单的核心数据轻量级迁移,我已经创建了新的版本化模型并激活了它。我真的必须手动实现核心数据堆栈初始化才能通过迁移权限吗?如果是,核心数据堆栈应该在哪里初始化,以便覆盖默认值?
您在评论中提到您正在使用基于文档的应用程序模板——这是原始问题中遗漏的一个关键细节。
对于此模板,您使用的是 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)
}