我在 Objective-C 中使用 Parse iOS SDK 并尝试根据对象的关系是否包含至少一个与特定查询匹配的对象或没有与同一查询匹配的关系对象来查询对象。我正在尝试使用-[PFQuery whereKey:matchesQuery:]
并-[PFQuery whereKey:doesNotMatchQuery:]
执行此操作,但我遇到了错误"bad type for $inQuery"
并相信这与我正在尝试做的事情有关。有没有办法能够在单个 PFQuery 中查询此类对象?如果没有,实现这一目标的最佳方法是什么?
我从使用 的旧 Parse 论坛中找到了以下现有答案-[PFQuery whereKey:containedIn:]
,但它似乎使用 PFObjects 数组而不是 PFRelation 作为其键,并且还需要现有的对象数组来匹配(因此似乎不起作用对我来说):https ://www.parse.com/questions/query-where-relation-contains-any-object-from-array
例子:
假设我有两类 PFObject:Teacher
和Student
. 一个 Teacher 对 Student 有一个对多的 PRFRelation students
,而每个 Student 都有属性firstName
and lastName
,每个属性都带有一个字符串。我希望能够根据学生的属性查询教师,例如:
- 至少有一名学生名为 的所有教师
Billy
。 - 所有没有名为“Emily”的学生的老师。
为此,我目前正在使用以下代码搜索至少有一名名为“Billy”的学生的教师:
PFQuery *teacherQuery = [[PFQuery alloc] initWithClassName:@"Teacher"];
PFQuery *studentsQuery = [[PFQuery alloc] initWithClassName:@"Student"];
[studentsQuery whereKey:@"firstName" equalTo:@"Billy"];
[teacherQuery whereKey:@"students" matchesQuery:studentsQuery];
以及以下代码来搜索没有名为“Emily”的学生的教师:
PFQuery *teacherQuery = [[PFQuery alloc] initWithClassName:@"Teacher"];
PFQuery *studentsQuery = [[PFQuery alloc] initWithClassName:@"Student"];
[studentsQuery whereKey:@"firstName" notEqualTo:@"Emily"];
[teacherQuery whereKey:@"students" matchesQuery:studentsQuery];