2012-02-22 9 views
3

ここには単純なシナリオがあります。私は2つのコアデータエンティティ:ABが1対多の関係を持っていると仮定します。 (Aは多くを指すことができるB)。 Aオブジェクトのすべてを取得してNSFetchedResultsControllerを作成する場合、Aオブジェクトのプロパティを変更すると、controllerDidChangeContentデリゲートメソッドがトリガーされます。ただし、Bオブジェクトのプロパティを変更しても、このメソッドはトリガされません。 (変更されたBオブジェクトは、Aオブジェクトの1つによって参照されます)なぜcontrollerDidChangeContentが呼び出されていないのですか?

何らかの理由がありますか?

+0

NSFetchedResultsControllerを作成する場所にコードを投稿できますか?別の述語が必要になる可能性があります。 – MishieMoo

+0

私は上記のシナリオを意図的に単純化しました。私のコードははるかに複雑です...述語がこの問題にどのように関係しているかをお聞かせください。 – Joshua

+0

@ Jimのコメントは問題に近づきます。 'A'を探しているのに' B'のプロパティを変更した場合、コントローラは 'B'ではなく' A'を見ているので、内容を変更しませんでした。 – MishieMoo

答えて

7

これは私の頭の中でそれを取るのに時間がかかりました。フェッチされた結果コントローラは、管理されたオブジェクトコンテキストの変更を評価します。これらの変更は、フェッチされた結果コントローラのデリゲートメソッドがフェッチのために設定された基準を満たしている場合にのみ起動します。これには、述部条件の一致が含まれます。

コントローラがタイプAのエンティティをフェッチしている場合、Bへの変更がA内のものに影響する(そして、述語条件と一致するとabdがソート記述子と一致する場合にのみ)B型のエンティティの変更に反応します)。

上記の質問に述語を表示できますか? AとBの関係を見せてもらえますか?

+0

私はそれを理解していません...どのように理論​​的にはBの変更はAにあるものに影響を与えることができますか?これらはよくカプセル化された2つの異なるオブジェクトです(Aは著者、Bは本です) – Joshua

+1

あなた自身の質問に答えています。 Bへの変更がAに影響しない場合、フェッチされた結果コントローラーが変更を認識する理由は何でしょうか。関係の変更がない限り。述語を表示すると、実際に何が起こっているのかが明らかになります。 – Jim

+0

この問題に関する新しい質問を投稿し、すべての関連コードを表示しました。もしあなたが一見することができれば素晴らしいだろう。 http://stackoverflow.com/questions/9446758/why-nsfetchedresultscontroller-is-not-being-updated-with-new-data – Joshua

関連する問題