- Я добавил новая версия модели. Удалены некоторые объекты и добавлены некоторые объекты.
- Я определил NSEntityMigrationPolicy с помощью createDestinationInstances(forSource:in:manager:) и createRelationships(forDestination:in: менеджер
. - Я создал новую базовую модель сопоставления данных. (Возможно, в этом нет необходимости. Если да, то как программно связать мои объекты с политикой миграции?)
- В рамках базовой модели сопоставления данных я указал пользовательскую политику для всех объектов.
В настройке контейнера я добавил два параметра, как показано ниже:
Код: Выделить всё
storeDescription.setOption(false as NSNumber, forKey: NSMigratePersistentStoresAutomaticallyOption)
storeDescription.setOption(false as NSNumber, forKey: NSInferMappingModelAutomaticallyOption)
Когда я запускаю свое приложение, я получаю самые основные ошибки:
Версия модели управляемых объектов, использованная для открытия постоянного хранилища, несовместима с той, которая использовалась для создания постоянного хранилища.
Полагаю, что эта миграция даже не предпринималась, что имеет смысл, поскольку я установил для NSMigratePersistentStoresAutomaticallyOption значение false.
Я попытался выйти за рамки того, что смог найти в Интернете, и попытался инициализировать вручную миграция:
Код: Выделить всё
let sourceModel = container.persistentStoreCoordinator.managedObjectModel
guard let modelURL = Bundle.main.url(forResource: "MyModelName", withExtension: "xcdatamodeld") else {
fatalError("Unable to locate model file.")
}
guard let destinationModel = NSManagedObjectModel(contentsOf: modelURL) else {
fatalError("Unable to load destination model.")
}
let migrationManager = NSMigrationManager(sourceModel: sourceModel, destinationModel: destinationModel)
let mappingModel = NSMappingModel(from: [Bundle.main], forSourceModel: sourceModel, destinationModel: destinationModel)!
migrationManager.currentEntityMapping.entityMigrationPolicyClassName = "MyMigrationPolicyClassName"
Мой вопрос: как реализовать собственную логику для CoreData с помощью миграции CloudKit?
Подробнее здесь: https://stackoverflow.com/questions/784 ... tionpolicy
Мобильная версия