题
我正在尝试从我的数据库中解析一些对象。我正在使用parse.com 作为web服务。下面的代码给了我一些基于4个查询的对象,其中2个是复合的。
变量"meetingAge"必须等于indexAge或"6" 变量"meetingSex"必须等于"sex"或"2" 变量"isAvaiable"必须等于YES 变量"author"必须与user不同。用户名称
基本上我正在尝试实现具有2或条件和2和条件的查询。
下面的代码给了我一个错误的结果,没有异常或类似的东西,只是一个错误的对象。我确定这是一个语法问题,但我无法弄清楚如何正确地写这个。.如果我只是使用1个复合查询,然后将2和查询添加到其中,我会得到一个正确的结果,但后来我错过了1个过滤器。.
PFQuery *queryAge1 = [PFQuery queryWithClassName:@"MeetingObject"];
[queryAge1 whereKey:@"meetingAge" equalTo:indexAge ];
PFQuery *queryAge2 = [PFQuery queryWithClassName:@"MeetingObject"];
[queryAge2 whereKey:@"meetingAge" equalTo:@"6"];
PFQuery *queryCompound = [PFQuery orQueryWithSubqueries:@[queryAge1,queryAge2]];
PFQuery *querySex1 = [PFQuery queryWithClassName:@"MeetingObject"];
[querySex1 whereKey:@"meetingSex" equalTo:user[@"sex"]];
PFQuery *querySex2 = [PFQuery queryWithClassName:@"MeetingObject"];
[querySex2 whereKey:@"meetingSex" equalTo:@"2"];
queryCompound = [PFQuery orQueryWithSubqueries:@[querySex1,querySex2]];
[queryCompound whereKey:@"isAvaiable" equalTo:[NSNumber numberWithBool:YES]];
[queryCompound whereKey:@"author" notEqualTo:user.username];
[queryCompound findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
}
解决方案
在你的队伍里。.. queryCompound = [PFQuery orQueryWithSubqueries:@[querySex1,querySex2]];
您正在创建一个全新的查询,忽略所有年龄的东西。
编辑
你太复杂了。
你可以这样做。..
PFQuery *query = [PFQuery queryWithClassName:@"MeetingObject"];
[query whereKey:@"meetingAge" containedIn:@[@"6", indexAge]];
[query whereKey:@"meetingSex" containedIn:@[@"2", user[@"sex"]]];
[query whereKey:@"isAvaiable" equalTo:[NSNumber numberWithBool:YES]];
[query whereKey:@"author" notEqualTo:user.username];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
}
这将捕获您正在寻找的所有选项。
此外,就像一个快速的笔记。选择变量名称以使其更具可读性。如果他们都以这个词开头 query
很难区分它们。也使它们具有描述性。 queryAge1
和 queryAge2
让人更难理解他们在做什么。
不隶属于 StackOverflow