我有三个实体:机构、类(class)、学生 一个机构可以有很多类(class),一个类(class)只能有一个机构(1 - 很多) 一个类(class)可以有很多学生,一个学生可以加入很多类(class)(很多 - 许多)。
统计一个机构的类(class)很简单,其关系名为“类(class)”:
int numberCourses = institution.course.count;
我的问题:
我如何计算机构中的学生人数? 在实体类(class)中,我将“学生”与实体学生联系起来。如何从机构通过类(class)访问学生?
注意:一个学生可以成为许多类(class)的成员,因此他有可能成为许多机构的成员。
简单地说,模拟上面的代码行,我想要这个:
institution -> ALL courses -> student.count
谢谢帮忙!! C.
最佳答案
有两种不同的解决方案。你可以得到该机构所有学生的集合和 数一数:
NSSet *students = [institution valueForKeyPath:@"courses.students"];
NSUInteger numberOfStudents = [students count];
(我对多对多关系使用了复数形式,我觉得这样更直观。)
或者您为与该机构相关的学生构建一个获取请求:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Student"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY courses.institution == %@", institution];
[request setPredicate:predicate];
NSUInteger numberOfStudents = [context countForFetchRequest:request error:&error];
第二种解决方案的优点是Student 对象和中间Course 对象不会加载到内存中。计算对象数量完成 在 SQLite 级别。
关于ios - TWICE相关实体的CoreData计数记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16265669/