Почему данные удаляются, если я включаю облегченную миграцию в Swift 5? - PullRequest
1 голос
/ 07 мая 2020

Я успешно запустил 1-ю версию своего приложения с MyProject.xcdatamodel. Сейчас моя вторая версия находится в разработке, и я создал новую версию модели с именем MyProject2.xcdatamodel на основе MyProject.xcdatamodel и установил для нее значение Current. Я включил облегченную миграцию в моем AppDelegate:

lazy var persistentContainer: NSPersistentContainer = {

let container = NSPersistentContainer(name: "MyProject")

    // Support for light-weight migration 
    /*-------------------------------------------------------*/
    let description = NSPersistentStoreDescription()
    description.shouldMigrateStoreAutomatically = true
    description.shouldInferMappingModelAutomatically = true
    container.persistentStoreDescriptions = [description]
    /*-------------------------------------------------------*/

    container.loadPersistentStores(completionHandler: { (storeDescription, error) in
        if let error = error as NSError? {
            fatalError("Unresolved error \(error), \(error.userInfo)")
        }
    })
    return container
}()

После этого я сначала установил старую версию, а затем установил новую версию поверх старой. При запуске новой версии в одной из таблиц моей базы данных старой модели не найдено данных, которые я не касался. Если я удалю эти 4 строки миграции, будут получены данные.

В чем может быть причина? Что я делаю неправильно для облегченной миграции?

...