您好,我正在处理 3 个实体(班级、学生、考试记录)的核心数据及其关系区域:
Class<------>> Students <------> ExamRecord
我创建了一个谓词来获取第 5 班的学生列表。
NSString * fmt2 = @"studentsToClass.className=%@";
NSPredicate * p2 = [NSPredicate predicateWithFormat:fmt2,@"5th",nil];
这样我就得到了五年级的所有学生
现在我还想对获取的学生应用另一个过滤器。
获取考试记录“结果”为“通过”的学生。结果是 ExamResult 实体中学生的一个属性
我如何在其中使用复合谓词?
如果我错了请纠正我
任何帮助将不胜感激
Thanks
您可以使用复合谓词:
NSPredicate *p1 = [NSPredicate predicateWithFormat:@"studentsToClass.className = %@", @"5th"];
NSPredicate *p2 = [NSPredicate predicateWithFormat:@"studentsToExamRecord.result = %@", @"Pass"];
NSPredicate *p = [NSCompoundPredicate andPredicateWithSubpredicates: @[p1, p2]];
或者您只需将测试与“AND”结合起来:
NSPredicate *p = [NSPredicate predicateWithFormat:@"studentsToClass.className = %@ AND studentsToExamRecord.result = %@",
@"5th", @"Pass"];
请注意,参数列表predicateWithFormat
is not nil
-终止。
参数的数量由格式中格式说明符的数量决定
细绳。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)