2

現在、顧客データを CoreData データベースに保存する macOS アプリケーションを作成しています。

今、そのデータをiCloudに保存したいと思います。アイデアは、すべてのユーザーが自分の iCloud に独自のデータを持っているということです。彼が複数の Mac/iOS デバイスを使用している場合、彼は自分のデータにアクセスできます。

そのため、すべての顧客に対してデータ ストレージを集中管理するのではなく、顧客ごとに個別にデータ ストアを作成します。

CloudKit に関するいくつかのトピックを読みましたが、一般的に混乱していました。

  • CloudKit は、グローバル データのデータ ストレージを提供します (例: 顧客のデータを保存したい)
  • CoreData をすべての顧客の iCloud アカウントにストーリー化する可能性はありますか?
  • もしそうなら、これはCloudKitで可能ですか、それともEnsemblesのようなサードパーティのライブラリを使用する必要がありますか? (2016 年のスレッドで、Apple は iCloud 経由で CoreData を使用する可能性を却下したが、現在は Ensemble のようなサードパーティのライブラリのみが機能すると述べている)

誰かがこれで彼の経験を教えてもらえますか?

ありがとうございました

4

1 に答える 1

3

CloudKit は非常に広範です。次の 3 種類のデータベースを提供します。

  1. 全員が共有できるパブリック。
  2. プライベート。1 つの iCloud アカウントに固有です。
  3. 共有: 誰かのプライベート データベースですが、アクセス権が付与されています。

これにより、多くのオプションが提供されます。また、単一の iCloud ユーザーのデバイス間でデータが共有されるという質問のケースは、プライベート データベースにうまく適合します。つまり、CloudKit は非常にうまく機能します。

他の人がすでに述べているように、CloudKit はデバイス間でデータを移動するために必要なオンライン ストレージを提供しますが、そのための完全なメカニズムは提供しません。そこでEnsemblesのようなフレームワークが登場します。それらは、CloudKit およびその他のサービスの上に構築され、時間と空間で分離された 2 つのデバイスの同期を維持するために必要なすべての簿記を処理します。(免責事項: 私は Ensembles フレームワークの開発者です。)

Ensembles のようなフレームワークを使用する必要はありません。CloudKit と直接通信することはできますが、Core Data と完全に同期するアプリを開発するには、どれだけの時間とスキルが必要かを過小評価してはなりません。データセットによっては、多くの問題が発生する可能性があります。アンサンブルと同様のフレームワークは、多くのことを行います。

  • すべてのデバイスで変更が同じ順序で確実に再生されるようにする
  • 2 つの異なるデバイスでの同時変更の処理
  • 古い冗長データの削除
  • バッチ処理を提供することでメモリ使用量を低く抑えます。これは iOS では非常に重要です

要するに、あなたはそれを自分で行うことができますが、私はお勧めしません. Core Data の同期が必要な場合は、Ensembles をお勧めするか、Seamなどの他のライブラリを検討することをお勧めします(これは使用していませんが、人気があるようです)。

Core Data と結婚していない場合は、RealmFirebaseなどのオプションを検討できます。これにより、同期の問題とクライアント API が 1 回のヒットで効果的に処理されます。

于 2017-11-24T07:22:17.647 に答える