【发布时间】:2014-12-29 08:52:27
【问题描述】:
这是我正在使用的模型:
CourseProgram <--->> Student --->> Grades
当我从 Core Data 中获取我的 Course Program 托管对象时,它会正确返回 Student,但将 Grades 作为关系错误返回。
我了解 Core Data 会返回关系错误以减少开销。根据Apple documentation,我可以使用setReturnsObjectsAsFaults: 来强制Core Data 返回托管对象而不是故障。
我试过了,没用。每当我执行课程计划的获取请求时,我都无法将成绩作为托管对象获取。我如何为一段关系开火?
这是我用来获取课程项目对象的代码
// Fetch from persistent data store
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"CoursePrograms"];
[fetchRequest setReturnsObjectsAsFaults:YES];
NSArray *coursePrograms = [managedObjectContext executeFetchRequest:fetchRequest error:nil];
return coursePrograms;
【问题讨论】:
-
为什么要这样做?你能显示“不起作用”的代码吗?
-
@jrturton 更新了我的代码
-
好的,你为什么要这样做?根据您的对象图,预取所有关系可以一次将每个对象提取到内存中
-
我需要加载成绩,以便存档和发送数据。无论如何,Course Programs 的 行数 是有限的,不超过 20,所以我想这不会严重影响性能
标签: ios objective-c core-data