0

競合がどのように解決されるかが明確でない Core Data 同期ソリューションを採用することに、私は懐疑的です。残念ながら、iCloud や Simperium などのソリューションは、「競合は自動的に処理される」と述べているだけで、そのままにしてあります。多くの場合、これは十分な情報ではありません。

具体的な例を挙げると、エンティティ A と B を含むアプリがあり、それらの間に 1 対 1 の関係があるとします。関係が任意ではないことを想像してください。

完全に同期したストアと 2 つの関連オブジェクト A_0 および B_0 から始めて、device1 は B_1 という新しい B オブジェクトを作成し、A_0 を B_1 に関連付けます。B_0 を削除します。

同時に、デバイス 2 も B_0 を削除しますが、B_2 という新しいオブジェクトを作成し、それを A_0 に関連付けます。

この状況はどのように解決されますか?おそらくタイムスタンプの順序に基づいて、A_0 は B_1 または B_2 に関連付けられることになりますが、孤立したオブジェクトはどうなるでしょうか? 削除されましたか?1 つのデバイスからトランザクション全体をロールバックしますか?

関係が必要なため、オブジェクトを単独で存在させることはできません。

4

1 に答える 1

0

申し訳ありませんが、当面の間、関係はオプションとしてマークする必要があります。ここにチケットがあります。

lib の最新バージョン (0.6.2) では、次のようになります。

  • 変更は「First In First Processed」方式で処理されます。つまり、どちらの変更が最初に行われたかに応じて、A_0 は B_1 または B_2 に関連付けられます。
  • 重複した変更は無視されます (2 つのデバイスが B_0 を削除しても問題ありません)。
  • Simperium は (今のところ) 必須の関係をサポートしていないため、孤立したオブジェクトになってしまいます。

それが役立つことを願っています!

于 2014-01-08T00:40:14.253 に答える