ios - TWICE相关实体的CoreData计数记录

标签 ios objective-c core-data relation

我有三个实体:机构、类(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/

相关文章:

ios - iOS 版 Google Analytics 中的线程崩溃

iphone - 从服务器导入数据 txt/xml

Objective-C 字符串提取问题

objective-c - 修改从 NSFetchedResultsController 获取的托管对象

iphone - 类似 ios 中删除的效果

ios - 在带有IOS 6的iPad上展示aN操作表时崩溃

iphone - 从 IBM webs seal 后面的服务器访问 ipa 和 plist 文件

iphone - viewcontroller 中 appdelegate 和 delegate 的区别

ios - 更改已发布应用程序中核心数据中的属性值

objective-c - 如何将获取的对象保存到核心数据