Тяжелая миграция CoreData + iCloud - PullRequest
0 голосов
/ 04 мая 2020

В настоящее время я работаю над старым приложением с 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("")
    } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...