0

私は iOS 開発を始めたばかりで、Core Data に足を踏み入れています。私はゆっくりとつなぎ合わせているアプリを持っています (このサイトの助けに感謝します!) が、データを取得する方法に行き詰まっています。

アプリ:

私のアプリには 2 つのメイン画面があり、どちらも UITableViews です。新しいクラスを追加できる「クラス リスト」ビューと「追加」データ モデルには、コース (クラス用) と学生の 2 つのエンティティがあり、コースからの対多関係があります。 -学生.現在、「クラスリスト」ビューでクラスをタップすると、クラスに学生を追加できる「学生の追加」ビューに移動するように機能していますが、フェッチ結果コントローラーは追加したすべての学生を返します. 私の質問: 「学生の追加」ビューでフェッチ要求をフォーマットして、そのクラスに属するべき学生のみを取得するにはどうすればよいですか? これが私が今持っている取得結果コントローラです:

-(NSFetchedResultsController *) fetchedResultsController {
if (_fetchedResultsController !=nil) {
    return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"name" cacheName:nil];
_fetchedResultsController.delegate = self;
return _fetchedResultsController;

}

述語と関係があると思いますが、そこまで学習していません。どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

あなたは正しいと思います。特定のコースに属するすべての学生をフェッチするには、次の述語をフェッチ リクエストに追加します。

Course *theCourse = ...; // your Course object
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"course = %@", theCourse];
[fetchRequest setPredicate:predicate];

( StudentからCourseへの 1 対 1 の関係を「course」と呼ぶと仮定します)。

于 2013-07-04T22:06:17.770 に答える