Как сделать легкую миграцию CoreData в Swift

Я пытаюсь мою первую легкую миграцию CoreData. Я прочитал два руководства по легким миграциям. Оба добавляют код в класс CoreDataStack, изменяя переменные, такие как NSPersistentStoreCoordinator и добавляя:

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

моя проблема в том, что у меня есть прекрасно функционирующее приложение с использованием CoreData, но у меня нет этого класса или чего-то подобного. моя проблема, почему эти проекты предполагают, что у меня есть этот класс, и я могу достичь своей легкой миграции без него? Если нет, то как его добавить?

дополнительная информация, если необходимо ответить

в сентябре я построил приложение с помощью CoreData. Это был мой первый раз, используя CoreData и я последовал за этим лучом Вендерлих руководство. Он отлично работал, я закончил приложение, и теперь его в магазине. Теперь я хотел бы начать вносить некоторые изменения в приложение, которые включают новые атрибуты CoreData и несколько новых объектов. Я читал, что мне нужно настроить новую версию модели.

I нашел Ray Wenderlich guide но он использует этот CoreDataStack.swift файл, которого у меня нет:

CoreData Class

что расстраивает, так это то, что я настраиваю CoreData с помощью их руководство, и оно не включало этот файл! Затем я отправляюсь на миграцию, и они предполагают, что она у меня есть.

Я пошел в поисках другого легкого метода миграции, нашел это альтернатива и он тоже ссылается на код, который я никогда не встроенный в мою 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]

1 ответов


параметры миграции должны использоваться в вызове, который добавил постоянное хранилище к координатору постоянного хранилища. Вы легко найдете эту строку кода, выполнив поиск addPersistentStoreWithType.

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

скорее всего, ваш основной стек данных находится в классе AppDelegate, но независимо от того, где он находится, здесь вам нужно добавить параметры миграции.