考虑Action
与assignedTo
实体的User
关系。 (Action.assignedTo->>用户)
选择actions
中包含user
的所有assignedTo
的查询是什么?
答案 0 :(得分:2)
子查询有点沉重。 你可以用这个:
[NSPredicate predicateWithFormat:@"ANY assignedTo.userId == %@", user.userId];
答案 1 :(得分:0)
您是否使用Xcode
的{{1}}生成器创建了模型文件?
如果是这样,请检查您的User.h文件,您应该看到如下内容:
CoreData
这意味着您可以调用该用户的所有操作:
@property (nonatomic, retain) NSSet *actions;
无需使用谓词。
如果您仍想使用谓词,谓词应如下所示:
NSSet *userActions = user.actions;
如果你需要添加aditional谓词,你应该为它们创建一个NSCompoundPredicate:
NSPredicate *userPredicate = [NSPredicate predicateWithFormat:@"assignedTo == %@",user];
答案 2 :(得分:0)
我发现 SUBQUERY
是正确的答案;它完美无缺:
[NSPredicate predicateWithFormat:
@"(SUBQUERY(assignedTo, $a, $a.userId == %ld).@count != 0)", user.userId];
并按status
过滤
[NSPredicate predicateWithFormat:
@"(SUBQUERY(assignedTo, $a, $a.userId == %ld).@count != 0) && status != 'Completed'", user.userId];