我有三个实体。
http://oi60.tinypic.com/2nqbh2q.jpg
我需要检索教授某个学生的所有讲座。 到目前为止,我能够提出的解决方案是
首先使用子查询来检索学生所需的所有课程
NSPredicate * predicate = [NSPredicate predicateWithFormat:@“SUBQUERY(学生,$ student,$ student.name == '学生二')。@ count> 0" ];
我执行获取的请求以获取fetchedObjects。
接下来,我将所有讲座对象与fetchedObjects进行比较。在fetchedObjects中开设课程的讲座是教授相关学生的人。
有没有更简洁的方法来做这个而不用手工比较? 我的意思是我可以单独使用谓词吗?
答案 0 :(得分:0)
您想要检索“课程”实体或“讲师”实体吗?
对于课程,您可以尝试使用此谓词
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"students.name = %@",NAME];
现在你有课程实体,你也可以得到讲师,
对于讲师你可以尝试
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY courses.@unionOfArrays.students.name = %@",NAME];
答案 1 :(得分:0)
要获取所有具有给定学生课程的讲师,请使用谓词
[NSPredicate predicateWithFormat:@"SUBQUERY(courses, $c, ANY $c.students.name == %@).@count > 0", studentName]
备注:在您的第一个示例(为学生提取所有课程)中,您不需要提示:
[NSPredicate predicateWithFormat:@"ANY students.name == %@", studentName]