2 つのコア データ エンティティがあるとします。Student エンティティと Class エンティティ。この例では、学生は正確に 1 つのクラスに所属しており、クラスには多くの学生がいる可能性があります。
これらが大きなクラスであるとしましょう。つまり、各クラスには 1000 人の生徒がいます。
Class エンティティは次のようになります。
NSString* name
NSArray* students
および Student エンティティ:
NSString* name
Class* class
NSString* grade
私の UI では、クラスを表示したいと考えています。特定の成績を持つ学生の数を表示したい。つまり、1000 人の生徒のクラスの場合、50 人が A、500 人が B、200 人が C というようになります。
これらのカウントを Core Data から取得する最も効率的な方法は何ですか?
私は現在、NSFetchedResultsController を使用して、group by + count クエリのフェッチ要求を渡しています。私は NSFetchedResultsController を使用しているため、特定の成績を持つ学生の数が変化すると UI が更新されます。ただし、かなり遅いです。
クエリを実行せずにこの情報を取得する方法はありますか? つまり、生徒がクラスに追加されるか、成績が変更されると、クラスのプロパティがすべての成績カウントで更新されます。そのため、カウントが必要な場合、それらは単なるクラスのプロパティであり、クエリは必要ありません。
出来ますか?