0

同じ永続ストアと通信している2つのプロセスがあります。 1つのプロセスにコンテキストを保存し、分散通知を送信します。他のプロセスは、分散通知を見て、再びそのデータをフェッチしますが、それでも古いデータを受け取ります。他のプロセスが店舗から正しいデータを取得するために必要な「フラッシング」がありますか?異なるプロセスのNSManagedObjectContext

EDIT:データを正しくフラッシュしていたことがわかりました。 NSManagedObjectsには、これを行うために使用する "refreshObject:mergeChanges"メソッドがあります。この問題はタイミングに関連しているようです。 AとBの2つのプロセスがあるとしましょう。プロセスAがメインプロセスで、データベースに保存します。その後、プロセスBはデータベースへの保存を行い、完了したことをプロセスAに通知し、プロセスAは新しいデータをフェッチします。プロセスAの保存とプロセスBの保存が近すぎると、リフレッシュしても古いデータがプロセスAによって取得されることがわかりました。 2つのセーブの間にある程度時間がかかるように強制すると、正しく動作します。

これは明らかに、データが実際にデータベースに保存される前に通知が送信されるような競合状態のようですが、通知は管理対象オブジェクトのdidSaveメソッドで送信されますコンテキストはすでに保存されています。

答えて

1

コンセプトを確認して、さまざまなコンテキスト間で永続的なストアコーディネータの正しい値を管理、取得、伝達する必要があります。

ここ

- >http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdChangeManagement.html#//apple_ref/doc/uid/TP30001201-CJBDBHCB

問題を解決する必要があります。

これは役に立ちます。

+0

これは私が探していたものです。ありがとうございます。 – JPC

+0

これは私が探していたものではありません – JPC

関連する問題