シナリオ:コンテキスト間でManagedObject IDを渡す
私は2つのviewControllerをそれぞれ独自のコンテキスト(同じスレッド)で扱っています。私はmanagedObjectのobjectIDをMOC2 - > MOC1からdelegateメソッドを介して渡そうとしています。ファイン、それは、それはObjectIDを渡しているようです。
ここは問題です... MOC1(デリゲート)から[self.localMOC objectWithID:thePassedID]
経由で新しいオブジェクトへのポインタを取得します。私は見つかったオブジェクトにNSLogを実行し、ログにはそれが記述されていると思われます。現在、更新されたフェッチされた結果コントローラでそれを見つけようとすると、同じ結果コントローラを使用しているテーブルビューにオブジェクトが表示されても、それを見つけることができません。ここで
はログステートメントは、オブジェクトがobjectWithID経由...
です:<Account: 0x6b11f90> (entity: Account; id: 0x6db44b0 <x-coredata:///Account/t5F84827D-E710-4331-A462-FCA1A0D335102> ; data: <fault>)
結果コントローラオブジェクト:<Account: 0x6b1fc50> (entity: Account; id: 0x6b50250 <x-coredata://84B6642A-9C80-451F-BED4-52952EDFC43C/Account/p9> ; data: <fault>)
だけでなく、1はpermanentIDであり、他はtemporaryIDあるように思え完全に異なるメモリアドレスである。
私が間違っていることに関する手掛かりはありますか?以下は
流れです:
私は、新しい管理対象オブジェクト(またはそれの何らかの形)がテーブルビューとフェッチ結果コントローラに表示されないため、MOC 1が更新されていることを知っています。さらに、ObjectIDを渡すために、デリゲートメソッドを使用する必要があります。 – Gobot
おそらく、更新があり、_updating_ですか? 2つの別々のコンテキストがあり、変更を加えたら、何らかの形でデータを同期させる必要があります。どのように現在これをやっていますか? – jrturton
NSManagedObjectのリセットメソッドを介して。 ObjectIDはそれぞれの管理対象オブジェクトに固有のものだと思っていましたが、主にそのオブジェクトへの参照を取得するために使用されていました。 「ID」値がない場合、他にどのようにそのオブジェクトを取得しますか?私が混乱しているのは、オブジェクトがコンテキスト内で見つかると主張することです。 – Gobot