В настоящее время я работаю над старым приложением с CoreData + iCloud внутри. Мне нужно обновить модель данных, и я тоже думал о переходе на CloudKit, поскольку iCloud устарела, поскольку iOS 10.
Проблема заключается в том, что необходима усиленная миграция, и, очевидно, iCloud допускает только облегченные миграции. Когда я переключусь на CloudKit, я подумал, что я могу переместить хранилище iCloud в локальное хранилище, выполнить интенсивную миграцию и, наконец, переключиться на CloudKit.
Моя проблема заключается в следующем: как получить хранилище iCloud с предыдущую модель, перейти на локальную и перейти на новую модель? В следующих строках кода метаданные в sourceStore
уже имеют новую структуру модели, а мой migratedStore
пуст. Я также прочитал этот ответ , который заставляет меня чувствовать, что я должен переосмыслить процесс. Какие мои лучшие варианты здесь?
let migrationPSC = NSPersistentStoreCoordinator(managedObjectModel: self.model)
let iCloudOptions: [String : Any] = [NSPersistentStoreUbiquitousContentNameKey: "iCloudStore", NSSQLitePragmasOption:["journal_mode" : "DELETE" ]]
let localOptions: [String : Any] = [NSSQLitePragmasOption:["journal_mode" : "DELETE"]]
do {
let sourceStore: NSPersistentStore = try migrationPSC.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: self.iCloudStoreURL!,
options: iCloudOptions)
let migratedStore = try migrationPSC.migratePersistentStore(sourceStore, to: self.localStoreURL!, options: localOptions, withType: NSSQLiteStoreType)
} catch {
print("")
}