問題タブ [nspersistentcloudkitcontainer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
325 参照

swift - NSPersistentCloudKitContainer の使用時に一意性を記録しますか?

NSPersistentCloudKitContainerCloudKit を使用してデータを同期するために、使用するアプリを正常に移行しました。

ただし、特定のエンティティの一意性をどのように扱うべきか疑問に思っています。たとえば、一意である必要がUserあるプロパティを持つエンティティがあるとします。emailAddressここで、2 つのデバイスUserが同じメール アドレスでインスタンスを作成する場合を考えてみましょう。私の現在の実装では、一意性を強制するものは何もないため、変更が同期されるとすぐに両方のデバイスで 2 つのインスタンスを使用できるようになります。

現在、エンティティが一意であると仮定してエンティティを取得するたびに、それらが本当に一意であるかどうかを確認し、そうでない場合は、インスタンスの 1 つの関係を他のインスタンスに割り当てることを含め、それらをマージします。マージ後、「空の」インスタンスを削除します。これは問題なく機能しているように見えますが、これがうまくいかないケースも想定できます: 2 つのデバイスが同時にマージされ、最終的に異なるインスタンスが削除され、それらすべてが削除される場合です。

このような場合はどのように対処すればよいですか?

PS。私は同様の質問を探していて、いくつかの同様の質問を見つけましたが、それらはすべて を明示的に使用することに関連していCKRecordます。NSPersistentCloudKitContainerCloudKit の実装をカプセル化して簡素化するを使用しているため、この種の「低レベル」クラスは扱っていません。