私のアプリケーションは、スレッドごとに1つの管理対象オブジェクトコンテキストを持つ複数のスレッドを使用します。
わかりやすくするために、さまざまな管理対象オブジェクトのコンテキストをmoc1、moc2、...などと呼びます。
単純な1対多の関係を持つ2つのモデルがあると仮定しましょう。
User 1----* Document
ユーザーがログインすると、コンテキストの1つ(例:moc1)から対応するモデルをフェッチします。
(擬似コード)
UserModel *globalLoggedUser = ( Fetch the logged in user using moc1 )
次に、後で参照できるように、このユーザーを保存します。
アプリケーションの別の部分では、配列から何千ものアイテムをループして、そのためのDocumentオブジェクトを作成する必要があります。次に、各ドキュメントを現在のユーザーにバインドする必要があります。これは、別のバックグラウンドスレッド(独自のコンテキストを持つ)で発生します
for( NSString *documentName in documents) {
( Create new document using moc2 )
** THIS IS WHERE MY PROBLEM IS **
// What I currently do:
UserModel *tempUser = ( Fetch the logged in user using moc2 )
( bind new document to tempUser )
// What I would like to do:
( bind new document to globalLoggedUser )
// Note that in this case tempUser and globalLoggedUser are the same user, except they are attached to different contexts.
}
ご覧のとおり、毎回新しいユーザーを現在のコンテキストにフェッチする必要はありません。
問題は、globalLoggedUserがmoc1の一部であるのに対し、新しいドキュメントはmoc2の一部である(またはmoc3、moc4などはスレッドによって異なります)ということです。
それで、これについて行くための最良の方法は何ですか?オブジェクトをグローバルに保存/キャッシュしてから、同じオブジェクトを使用して、毎回フェッチする必要があるというペナルティを発生させることなく、異なるコンテキストで関係をバインドするにはどうすればよいですか?
あなたが提供できるどんな助けにも感謝します。