2011-11-16 4 views
1

私のアプリケーションはUIManagedDocumentを使用してCore Dataでデータを処理します。 2つのエンティティ(ポストとタグ)には多対多の関係があります。UIManagedDocumentの子MOCのオブジェクトを取得しています。MOC、多対多関係は空です。

投稿を編集したいときは、一時的なNSManagedObjectContextを作成し、そのparentContextをUIManagedDocumentのmanagedObjectContextに設定し、objectWithID:メソッドを使用して投稿を取得します。

のは、このことを想定してみましょう:

  • MOC1がMOC2が
  • POST1をポストを編集することが一時的NSManagedObjectContextあるUIManagedDocumentのNSManagedObjectContext
  • ある
  • POST2はMOC2
  • での投稿ですMOC1での投稿です

ここに問題があります:

  • post1.tags戻り2個のタグ
  • post2.tags 0タグ

を返すPOST2特性のすべてを適切に対多リレーションシップタグを除いて、検索されます。

なぜpost2.tagsにタグがないのですか?

答えて

0

私はこれに対する答えを持っていればよいと思っていますが、私が判断できた限り、それはバグです。多対多リレーションシップ検索は、このシナリオではまったく動作していないようです。

確かに、これがテストを逃れたと信じるのはちょっと難しいようですが、私は全く何らかの形でこの仕事をすることができませんでした。

+0

うん、これもバグだと思う。私はまだそれを提出する時間がなかった、すぐにそれを行います。 – Olivier

2

さらにテストすると、これは一時的なオブジェクトIDと永続的なオブジェクトIDに関連していると思います。私たちが同じことを見ているなら、MOC1の多対多関係によって返されるオブジェクトは、永続的ではなく一時的なIDを持つことになるでしょう。

おそらくMOC2では、多対多関係でオブジェクトを作成するためにいくつかの挿入が行われています。挿入が完了したら、保存する直前に、[[moc2 insertedObjects] allObjects]で挿入されたオブジェクトの配列を取得します。トラッキング配列を使用して、この配列を[moc2 obtainPermanentIDsForObjects:error]に渡します。次に、MOC2でsaveを呼び出します。

これは私にとってはうまくいくようです。デフォルトでは、MOC2でのsaveの呼び出しは、実際には永続オブジェクトIDをMOC1に作成しないように見えます。

+0

明日これを試してみます。あなたは投稿し続けるでしょう。 – Olivier

+0

これはちょうどこのくそに苦労して数週間後に私のお尻を保存!どうもありがとうございます!! –

関連する問題