1

私は3つのコンテキストを持っています:

masterMOC - private queue tied to the persistent store, so physical saves happen here
----mainMOC - main queue tied to the UI, child of masterMOC
-------backgroundMOC - private queue, child of mainMOC

mainMOCで Employee オブジェクトを作成し、 を保存してみましょうmainMOC。次に、masterMOC(ディスクに書き込む)を保存します。

ここで、EmployeeNSManagedObjectIDを変数 objectID に保存しました。バックグラウンドMOCでこの従業員を取得したい。[backgroundMOC objectWithId:objectID]この目的に役立ちますか? 永続ストアに移動し、そのメソッドを使用してこのオブジェクトを取得しますか? または、取得リクエストを実行する必要がありますか?

4

2 に答える 2

0

あなたはそれを正しくやっています。彼らは、ID を使用して MOContext 間でオブジェクトを渡すことを望んでいます。objectWithId は永続ストアにヒットし、オブジェクトを新しい状態でロードします。あなたが心配しなければならない唯一の問題は、このケースです。

オブジェクトを取得するか、MOContext で新しいオブジェクトを作成します。保存せずに objectID を別のコンテキストに渡そうとすると、新しい MOContext は更新を認識しません。また、新しいオブジェクトを作成した場合、objectID は永続ストアにないため、nil が返されるか、定義されていないと思います。

于 2012-07-05T04:02:02.410 に答える
0

ネストされた MOC について説明している、今年の WWDC ビデオ「Core Data Best Practices」があります。しかし、あなたの質問に答えるために、はい、objectWithIdオブジェクトを見つけるために最も少ない数の MOC レベルを移動します。そのため、 を呼び出し[backgroundMOC objectWithId:objectID]たときにオブジェクトが に存在する場合、または データベースにアクセスする必要なく、mainMOCからオブジェクトを取得します。mainMOCmasterMOC

于 2012-07-05T04:23:20.457 に答える