如何在Swift中做轻量级的CoreData迁移

我正在尝试我的第一个轻量级CoreData迁移。 我阅读了两个轻量级迁移指南。 都将代码添加到CoreDataStack类,修改像NSPersistentStoreCoordinator的variables,并添加:

let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true] 

我的问题是,我有一个使用CoreData完美function的应用程序,但我没有那个类或类似的东西。 我的问题是 ,为什么这些项目假设我有这个课程,没有它,我可以实现轻量级的移植吗? 如果不是,我该如何添加?

更多信息,如果需要回答

在九月份,我使用CoreData构build了一个应用程序。 这是我第一次使用CoreData,并遵循这个Ray Wenderlich指南。 它工作得很好,我完成了应用程序,现在在商店。 现在我想开始对应用程序进行一些更改,包括新的CoreData属性和一些新的实体。 我读过,我需要设置一个新的模型版本。

我find了Ray Wenderlich指南,但它使用了我没有的CoreDataStack.swift文件:

CoreData类

令人沮丧的是,我使用他们的指南来设置CoreData,并且没有包含该文件! 然后我去做一个移民,他们假设我有。

我去寻找另一个轻量级的迁移方法,find了这个替代scheme ,它也引用了我从未构build到我的CoreData中的代码:

 lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = { // The persistent store coordinator for the application. This implementation creates and return a coordinator, having added the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail. // Create the coordinator and store var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel) let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("MyLog.sqlite") var error: NSError? = nil var failureReason = "There was an error creating or loading the application's saved data." if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error: &error) == nil { coordinator = nil // Report any error we got. var dict = [String: AnyObject]() dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" dict[NSLocalizedFailureReasonErrorKey] = failureReason dict[NSUnderlyingErrorKey] = error error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict) // Replace this with code to handle the error appropriately. // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. NSLog("Unresolved error \(error), \(error!.userInfo)") abort() } 

所以我已经阅读了指南并了解了90%的教程。 我只是需要有人来看看原始的CoreData教程,并告诉我,如果我没有一个CoreData类,我会添加轻量级的代码,如:

 let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true] 

迁移选项需要在将持久存储添加到持久存储协调器的调用中使用。 您可以通过searchaddPersistentStoreWithType来轻松find这一行代码。

 try coordinator!.addPersistentStoreWithType( NSSQLiteStoreType, configuration: nil, URL: url, options: mOptions) 

很可能您的Core Data堆栈位于AppDelegate类中,但无论它在哪里,都必须添加迁移选项。