Macos OSX上的核心数据轻迁移

Macos OSX上的核心数据轻迁移,macos,swift,core-data,xcode6,core-data-migration,Macos,Swift,Core Data,Xcode6,Core Data Migration,我使用的是Xcode 6基于文档的应用程序,其核心数据模板用于OSX,它在后台设置核心数据堆栈(没有可见的初始化代码)。现在我需要执行一个简单的核心数据轻量级迁移,我已经创建了新的版本模型并激活了它。我真的必须手动实现核心数据堆栈初始化才能传递迁移权限吗?如果是,应在何处初始化核心数据堆栈以覆盖默认值?您在评论中提到,您正在使用基于文档的应用程序模板,这是原始问题中遗漏的一个关键细节 使用此模板,您将使用NSPersistentDocument的子类。如果要使用NSPersistentDocum

我使用的是Xcode 6基于文档的应用程序,其核心数据模板用于OSX,它在后台设置核心数据堆栈(没有可见的初始化代码)。现在我需要执行一个简单的核心数据轻量级迁移,我已经创建了新的版本模型并激活了它。我真的必须手动实现核心数据堆栈初始化才能传递迁移权限吗?如果是,应在何处初始化核心数据堆栈以覆盖默认值?

您在评论中提到,您正在使用基于文档的应用程序模板,这是原始问题中遗漏的一个关键细节

使用此模板,您将使用
NSPersistentDocument
的子类。如果要使用
NSPersistentDocument
配置迁移,则需要覆盖
configurepersistentstorecordinatorforurl: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)
}

几乎是重复的-看看这个,它应该与swift和OS X一起工作:为什么
NSXMLStoreType
?这里有一些微妙的虐待狂…?不,只是从问题提到的Xcode项目模板复制和粘贴。我刚刚创建了一个基于CoreDataTest文档的核心数据项目,AppDelegate中绝对没有核心数据堆栈代码。这就是全部内容:
import cococoa@NSApplicationMain class AppDelegate:NSObject,nsapplicationedelegate{func applicationdifinishunching(aNotification:NSNotification){//在此处插入代码以初始化应用程序}func应用程序将终止(aNotification:NSNotification){//Insert code here to down your application}
Document.swift文件也没有任何核心数据堆栈设置代码……我使用的是OSX应用程序模板。