addPersistentStore
автоматически выполнит необходимую облегченную миграцию.Проверьте, доступен ли этот код во всех начальных путях вашего приложения.
Для этого вам необходимо предоставить правильный набор параметров, как показано ниже:
do {
let options = [ NSInferMappingModelAutomaticallyOption : true,
NSMigratePersistentStoresAutomaticallyOption : true]
try persistentStoreCoordinator.addPersistentStore(ofType: NSSQLiteStoreType,
configurationName: nil,
at: persistentStoreURL,
options: options)
} catch {
fatalError("Problem loading Persistent Store")
}
Пожалуйста, также убедитесь, что вашОсновной файл xcdatamodel указывает на последнюю версию вашей модели данных. Также обратите внимание , что после выбора вашей последней версии файла xcdatamodel (yourdatamodel 2.xcdatamodel), а не корневого файла xcdatamodel (yourdatamodel.xcdatamodel), будет сделан следующий снимок.
Слово предостережения:
Пересмотрите: вам действительно нужно что-то помимо легкого веса?В большинстве случаев легкий вес должен решить ваши проблемы.
Вы можете избавиться от лишнего веса, добавив больше полей и прекратив использовать старые поля в своем коде, упрощая задачу для Core Data.Для строк, использующих более старые поля, просто запустите некоторую операцию вставки / обновления / удаления , если обнаружено изменение версии модели данных ядра .
Чтобы проверить, где происходит сбой облегченного типа, вы можете включить следующиеАргумент XCode:
-com.apple.CoreData.MigrationDebug 1
Если облегченная версия не способна полностью перенести вашу модель (например, вы переименовали свои сущности или изменились типы данных, что очень нереально, и вам действительно следует пересмотреть свой дизайн, есливы делаете это), то вы можете рассмотреть это несколько сложное решение:
- добавить постоянное хранилище со старой версией модели и создать резервную копию существующих строк в каком-то внешнем файле (неосновные данные)
- удалить старое постоянное хранилище и воссоздать его с помощью addPersistentStore + более новая версия модели
- использовать более новое постоянное хранилище для вставки резервных копий данных
Если все остальное не удается, рассмотрите вариант сопоставления модели.Обратитесь к этой статье для более подробной информации .