開発中はiCloudと連携していることは確認できていたので、アプリを再インストールした時にデータが復活していた。アプリの審査が通って手元でリリースアプリを動かしたところ、再インストール時にデータが復元できなくてめちゃくちゃ焦りました・・・
調べたところCloudKit Databaseのサイトにログインして、
Deploy Schema Changesというのをクリックして本番環境でもiCloud連携ができるように設定が必要でした。
しかし、クリックしたところエラーメッセージが表示。
Schema uuid stale, please fetch latest schema.
という謎のエラーが。
ググったところ色々情報が出てきて
initializeCloudKitSchema
の処理をすると直ると出てきたので試したところ
container = NSPersistentCloudKitContainer(name: "hogehoge")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
container.viewContext.automaticallyMergesChangesFromParent = true
// この2行を追加してエミュレーターで動かす。
let options =NSPersistentCloudKitContainerSchemaInitializationOptions()
try? container.initializeCloudKitSchema(options: options)
無事「Deploy Schema Changes」でエラーメッセージがなくなり本番環境でもiCloud連携が動くようになりました。