0

Core Dataモデルには、3つのエンティティがありABおよび/またはとの関係を持つことができCます。ABC

特定の理由Bで、sコンテキストの子コンテキスト(両方とも同じ子コンテキストCを共有します)で作成されています。したがって、 1つの子コンテキスト(およびによって使用される)を持つ1つの親コンテキスト(によって使用される)があります。AABC

今私はする必要があります

  1. すべてをフェッチしA
  2. Bすべてのs(またはs)をフェッチしますC

私はMagicalRecordを使用してCoreDataと対話しているので、(1)は非常に簡単に実現できます。

NSArray *all_As = [A findAll];

(2)を達成するために、私は今、私が知っているAコンテキストを使用することができます:

NSManagedObjectContext *contextOfA = a.managedObjectContext

ここaで、はのインスタンスですA。私のアプリの設計方法により、すべてのインスタンスaを取得するために使用できるが常に存在することに注意してください(つまり、アクセスする必要はなく、アクセスする必要もありません)。上記のように、と(および)の間に関係がある必要はありません。結局、存在する必要すらありません(そして存在しなくても生きることができます)。BCBCAABCabca

しかし、私はそれを知ってBおり、の子の文脈でC生きています。A

したがって、基本的には、a.managedObjectContextの子コンテキストを取得し、その子コンテキストでフェッチ要求を実行する必要があります。

NSArrray *all_Bs = [B findAllInContext: a.managedObjectContext.childContext]

しかし、どうすればアクセスできますa.managedObjectContext.childContextか?

4

2 に答える 2

0

これを簡単に呼び出すことはできませんか?

NSArray *all_Bs = [B findAll]; 

MR は、言及されていない場合、コンテキストを単独で処理できる必要があります。

それがうまくいかない場合 - サードパーティのフレームワークを使用するかどうかを予測できません - 子コンテキストへの参照を保持し、フェッチするときにそれを使用しないのはなぜBですか?

(なぜ MR のようなものを使用するのかは私にはわかりません。Core Data の高度な機能を実際に使用すると、事態はかなり複雑になります。)

于 2013-02-22T13:07:19.307 に答える