115

データを保存、同期、およびバックアップしたいアプリを作成する初期段階にあります。アプリはデータベースにデータだけを保存するファイルはありません。iOS 8以降になる予定なので、CloudKitを使用できます。私はいくつかの調査を行いましたが、Core Data、iCloud、および CloudKit がどのように連携するかについてはまだ明確ではありません。

理解している限り、CloudKit はクラウドとの間でデータを取得および取得する方法にすぎません。CloudKit は、iCloud とデータを同期する別の方法ですか?

私の質問は次のとおりです。

  1. CloudKit を使用する場合でも、ローカルのコア データ データベースを作成する必要がありますか?

    • はいの場合、iCloud と自動的に同期されますか、それともメソッドを呼び出して両方の場所に保存する必要がありますか?
  2. データがクラウドにのみ保存されている場合、ユーザーは iOS デバイスがインターネットに接続されていないときにデータにアクセスできます。CloudKit のキャッシュは限られていると読みました。

  3. iCloud アカウントが有効になっていない場合、どのように機能しますか。

コア データ データベースをオフラインおよびオンラインで保存および同期するプロセスで、各テクノロジが何を行うかを分析できる人がいる場合。

私の現在の理解は次のとおりです。

  • Core Data はデータをローカルに保存するために使用されます

  • iCloudはデータを同期し、クラウドに保存します

  • CloudKit を使用すると、クラウドにデータを保存および管理できますか??

この質問が閉じられないように十分な情報を提供したことを願っています。

4

2 に答える 2

190

こんな感じです:

  • Core Data 自体は完全にローカルであり、Apple のクラウド サービスと自動的に連携することはありません。
  • iCloud が有効なCore Dataは、iCloud経由の同期をオンにします。Core Data に保存した変更はクラウドに反映され、クラウドで行われた変更は自動的にダウンロードされます。データは iCloud とローカルの永続ストア ファイルの両方に保存されるため、デバイスがオフラインの場合でもデータを利用できます。クラウド固有のコードを記述する必要はありません。受信する変更をリッスンする機能を追加するだけです (これは、別の管理対象オブジェクト コンテキストで行われた変更によく似ています)。
  • CloudKit は Core Data とは関係ありません。それは同期システムではなく、転送システムです。つまり、クラウド データを読み書きするときはいつでも、明示的な CloudKit API 呼び出しを行う必要があります。自動的には何も起こりません。CloudKit はデバイスにデータを保存しないため、デバイスがオフラインの場合、データは利用できません。CloudKit は、iCloud を使用する Core Data では利用できない機能もいくつか追加します。公開共有データや、データ セット全体ではなく一部のみをダウンロードする機能などです。

Core Data で CloudKit を使用する場合は、独自のカスタム コードを記述して、マネージド オブジェクトと CloudKit レコードの間で変換する必要があります。不可能ではありませんが、書くコードが増えます。より信頼できるかもしれませんが、確実に言うには時期尚早です。

過去に Core Data と iCloud を使用したことがある人の観点から CloudKit について説明するブログ記事を書きました。

更新、2016 年 6 月: の最新のドキュメントのNSPersistentStoreCoordinator時点で、 iCloud を使用した Core Data に関連するものはすべて非推奨としてマークされています。結果として、おそらく新規開発では避けるべきです。

于 2014-06-27T15:55:05.517 に答える