NSFetchedResultsController和Relationship

San*_*ier 5 iphone cocoa core-data objective-c nsfetchedresultscontroller

这次我使用NSFetchedResultsController得到一个奇怪的行为.我像这样创建一个fetchRequest:

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];
Run Code Online (Sandbox Code Playgroud)

如果我用executeFetchRequest:error:NSManagedObjectContext 执行它,我得到预期的结果.根据学生的所有考试.(在学生和考试之间是一对多关系)但是如果我在NSFetchedResultsController中使用相同的fetchRequest,我会得到不同的东西.直到现在我还没出手,我到底得到了什么.在我眼里,结果是随机的.

你能帮助我吗?我想用NSFetchedResultsController管理给定学生的考试.

桑德罗梅尔

Tec*_*Zen 1

如果您Student手上已有一个对象,则不必获取该Exam对象,只需向该Student对象询问其关系的内容即可exams。无需获取,因为您已经拥有对Exam所需所有对象的引用。

至于为什么获取在获取结果控制器之外工作,我不能肯定地说。控制器什么也不做,只是获取获取的结果并将其打包以显示在表视图中。如果数据在表视图中无法正确显示,则问题很可能出在将获取的结果控制器的内容连接到表视图的表视图委托/数据源方法中。