0

我想要混合两个PFQuery结果。在下面的代码中,我得到了两个结果相交的结果(所以所有用户名和 fullName 包含的用户self.searchText),我想包括所有结果(所以所有用户名等于的用户self.searchText和所有用户名等于self.searchText)。

PFQuery *query = [PFUser query];
[query whereKey:@"username" containsString:self.searchText];
[query whereKey:@"fullName" containsString:self.searchText];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (error) {
        NSLog(@"%@ %@", error, [error userInfo]);
    } else {
        self.searchResults = [[NSMutableArray alloc] initWithArray:objects];
        NSLog(@"%@", objects);
        [self.tableView reloadData];
    }
}];
4

2 回答 2

8

您要做的是获取两组的并集(OR)而不是它们的交集(AND)

使用以下代码应该会为您带来符合这些条件之一的所有用户

PFQuery *firstQuery = [PFUser query];
[firstQuery whereKey:@"username" containsString:self.searchText];

PFQuery *secondQuery = [PFUser query];
[secondQuery whereKey:@"fullName" containsString:self.searchText];

PFQuery *query = [PFQuery orQueryWithSubqueries:@[firstQuery ,secondQuery ]];
[query findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) {
  if (error) {
    NSLog(@"%@ %@", error, [error userInfo]);
} else {
    self.searchResults = [[NSMutableArray alloc] initWithArray:objects];
    NSLog(@"%@", objects);
    [self.tableView reloadData];
}
}];

这是指南的链接

https://parse.com/docs/ios_guide#queries-compound/iOS

于 2014-04-01T10:38:13.153 回答
0

当你说

所以所有用户的用户名等于 self.searchText 和所有用户的全名等于 self.searchText

你真正的意思是OR,而不是AND(因为这AND是你当前的代码所做的)。

要创建OR关系,您需要创建 2 个不同的查询,然后orQueryWithSubqueries:将它们组合起来。

于 2014-04-01T10:35:51.553 回答