5

今回はNSFetchedResultsControllerで奇妙な動作が発生します。NSFetchedResultsControllerとリレーションシップ

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entdesc = [NSEntityDescription entityForName:@"Exam" inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entdesc]; 
NSPredicate *predi = [NSPredicate predicateWithFormat:@"student == %@", self.student]; 
[fetchRequest setPredicate:predi]; 

私はNSManagedObjectContextのexecuteFetchRequest:error:でそれを実行した場合、私は期待した結果が得られます。私はこのようなfetchRequestを作成します。すべての試験は学生による。 (学生と試験の間には1対多の関係があります) NSFetchedResultsControllerで同じfetchRequestを使用すると、私は何か違うものを得ます。これまでは、私はちょうど私が得るものを手に入れませんでした。私の目では結果はランダムです。

私を助けることができますか? NSFetchedResultsControllerで特定の生徒の試験を管理したい。

サンドロ・マイヤー

+0

'[NSPredicate predicateWithFormat:@" student ==%@ "、self.exam]'。ここで、 'self.exam'は学生ですか? – albertamg

+0

申し訳ありませんが、私のせいです。確かにそれは学生でなければならない。 ;-) –

答えて

1

すでに手にStudentオブジェクトを持っている場合、あなたはちょうどそのexams関係の内容のためStudentオブジェクトを尋ねるExamオブジェクトをフェッチする必要はありません。フェッチする必要はありません。あなたが既に望むオブジェクトのすべてを参照しているからです。

フェッチ結果コントローラの外部でフェッチが動作する理由については、確実に言えません。コントローラは、フェッチの結果を取り出し、それらをパッケージ化してテーブルビューに表示します。データがテーブルビューで正しく表示されない場合は、フェッチされた結果コントローラの内容をtableviewに接続するtableviewデリゲート/データソースメソッドで問題が発生している可能性があります。

+0

ありがとうございました。私もこれについて考えました。しかし、NSFetchedResultsControllerは私のためにすべての処理を行います。他の解決策が見つからなければ、私はそのようにします。 ;-) –

+0

はい、同じ問題があります。 fetchcontrollerを使用してテーブルのすべてのセクションを作成するのは非常に便利です。 ここでベストプラクティスは何ですか? – obiwahn

関連する問題