我是iOS开发人员的新手,而且我已经深入了解Core Data。我有一个应用程序,我正在慢慢拼凑在一起(感谢这个网站的帮助!),但我仍然坚持如何获取数据。
该应用:
我的应用程序有两个主屏幕,都是UITableViews:一个“类列表”视图,可以添加新类,“添加我的数据模型有两个实体:课程(课程)和学生,有一个对多来自Course-Student的关系。现在我已经开始工作了,当我点击“班级列表”视图中的课程时,我被带到“添加学生”视图,我可以在这里添加学生到班级,但是我的提取结果控制器正在返回我添加的所有学生。我的问题:如何在“添加学生”视图中格式化获取请求以仅获取应该属于该类的学生?这是我现在拥有的获取结果控制器:
-(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;
}
我猜测它与谓词有关,但我的学习并没有那么远。任何帮助都将不胜感激。谢谢!
答案 0 :(得分:0)
你猜对了。要获取属于特定课程的所有学生, 将以下谓词添加到获取请求中:
Course *theCourse = ...; // your Course object
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"course = %@", theCourse];
[fetchRequest setPredicate:predicate];
(假设从学生到课程的一对一关系被称为“课程”)。