2016-11-15 7 views
0

iOSアプリケーションを初めて起動すると、デフォルトデータでいくつかのエンティティが初期化されます。同一のユーザがデバイスに最初にインストールされたときに、同じユーザのすべてのデバイスに対して同じプロセスが完了します。これはSimperiumの問題につながります。なぜなら、エンティティの属性の1つに制約があっても、重複が作成されるからです。それを避けるにはどうしたらいいですか? Simperiumがローカルでオブジェクトをスキップするようにする方法はありますか?または重複を挿入しないようにするには?Simperiumは既存のレコードを複製します

エンティティのsimperiumKeyを、ユーザーのすべてのデバイスで同じカスタム定数値に設定すると問題が解決されますか?私は、Simperiumが同じデバイスを複数のデバイスからインポートして重複や同期の競合を引き起こすのを防ぐでしょうか?

私はそのオプションを試したので、Simperium Server上のバケットは大丈夫ですが、ビューを破棄してもう一度開くとエンティティはもう存在しません。私がアプリを再起動すると、再び戻ってきます...アプリをリセットした後に再び現れるように見えます。非常に奇妙です。

UPDATE 問題は、別のデバイスから同じエンティティを挿入しようとすると重複したエンティティが取得されることです。例えば。初めて私のアプリケーションをセットアップするとき、私はコードなどでCURRENCYエンティティを初期化する関数を持っています。ユーザーが新しいアプリケーションにアプリケーションをインストールすることを決定した場合、別のデバイスから同じ操作が実行されます。この場合、新しいデバイスはCURRENCYエンティティを再び初期化するため、これらの情報は重複および競合エラーを生成します。私はSimperiumに、デバイス内でローカルに初期化されたエンティティを複製してはならないことを理解させる方法が必要です。 Simperiumがエンティティを同期するのを止めるためにSPManagedObjectから継承を削除しますが、その順番に他のエンティティとの関係があり、継承していないオブジェクトとの関係を持つエンティティを同期しようとするため、 SPManagedObjectから取得します。あなたが今より明確なアイデアを持っていることを願っています。

+0

このコードをどのように達成しようとしていますか? –

+0

どのコードですか?あなたはあなたの要求を明確にしていただけますか? Tx – Sergiob

+0

Simperiumの最初の段落にはどのような問題がありますか、最初の段落には問題があると理想的です。あなたが試したことを書いたが、正確に何が問題なのか。 –

答えて

0

この件についてさまざまな投稿を読んだところ、サインアウトしないということはsignOutAndRemoveLocalDataを呼び出さず、カスタムsimperiumKey-sを設定するとデータの重複が防止されることを理解しました。私はこのソリューションをテストしたところ、それは明らかに良好に見えました。私のアプリは同じユーザーの他のデバイスとデータを同期させるためにSimperiumを必要としますが、主にローカルのCoreDataデータベースで動作します。私はこのソリューションがこのシナリオに適していることを願っています。

関連する問題