iOS 13から導入されたCoreDataとCloudKitの自動連携を試してみた。
Xcodeの設定
+Capabilityで iCloudとBackgroundModes(RemoteNotifications)を追加する。
iCloudのCloudKitにチェックをつける。
![](https://ymgsapo.com/wp-content/uploads/2022/01/スクリーンショット-2022-01-04-12.16.43.png)
+ボタンの後にバンドルIDを入力、iCloud.が先頭に自動的に追加されてコンテナが作成される。
これで設定は完了、データは自動でクラウドに同期される。
CloudKit DashBoardについて
データを確認する場合はダッシュボードを使う。
上図の少し下の方に「CloudKit DashBoard」ボタンがあるのでブラウザで飛ぶ。
「This container has not been deployed to Production」と表示されているのが確認できる。
「Error loading container details.」が出る場合もある。
アプリを実行しデータを追加する。
「Schema」の「Record Types」にエンティティが追加される。
![](https://ymgsapo.com/wp-content/uploads/2022/01/スクリーンショット-2022-01-04-11.52.18.png)
データの確認
DataのRecordsからデータベースとゾーンを以下のように指定してデータ検索ができる
![](https://ymgsapo.com/wp-content/uploads/2022/01/スクリーンショット-2023-06-14-13.01.44.png)
上記のエラーが出るので、SchemaのIndexesにIndexを1つ追加する。
![](https://ymgsapo.com/wp-content/uploads/2022/01/スクリーンショット-2022-01-04-12.13.53.png)
「recordName」+「QUERYABLE」を追加し、再度実行するとデータが確認できる。
![](https://ymgsapo.com/wp-content/uploads/2022/01/スクリーンショット-2022-01-04-12.13.07.png)
AppStoreにリリースしたアプリではDevelopmentは使えない
Developmentは開発用のクラウドなので、AppStoreにリリースしたアプリでは使えない。
“Deploy Schema Changes” ボタンでデプロイする。
参考サイト
Udemyでも無料で解説しています。
https://www.udemy.com/course/swiftui-coredata-todo/learn/lecture/30398486#overview
Apple公式