Closed5

Core Data with CloudKit

YokiYoki

プッシュ通知を利用してCloudKitの変更をCoreDataに伝えている

YokiYoki

CloudKitへ同期するかしないかを切り替える

この仕様ができるかが気になったのがそもそも調べるきっかけ。

NSPersistentCloudKitContainerを生成し、storeDescription.cloudKitContainerOptions = nilと設定すれば良さそう。

https://developer.apple.com/forums/thread/695714
→ 再起動しないと他のデバイスからの同期が機能しない。バグ?

https://stackoverflow.com/questions/65355720/coredatacloudkit-on-off-icloud-sync-toggle
→ この方法も問題があると言及している

configurationを作成する方法も考えられる。

  • Cloudオン時
    • CloudのDBから参照するようにする
  • Cloudオフ時
    • LocalのDBから参照するようにする

同じエンティティを複数のConfigurationで管理した場合、データ差異があったらどうなるんだろう?
基本的には同じ(ミラー)となる前提だとは思う?つまりこの方式の場合単純にデータ量が2倍になるよね?

YokiYoki

今回の自分のケース(ここでは未記載)の場合、

storeDescription.cloudKitContainerOptionsで管理するのがベターそうだが、期待通りの動作しない且つconfigurationを使ってまで切り替え機能を提供したいかというとそうでもない。

「CloudKitへ同期するかしないかを切り替える」のではなく、「CloudKit同期をする」前提で考える方が良さそう。

YokiYoki

参考

このスクラップは2023/04/23にクローズされました