Смешайте два результата PFQuery

Я хочу получить сочетание двух результатов PFQuery. В приведенном ниже коде я получаю результаты пересечения двух результатов (поэтому все пользователи, чье имя пользователя И полное имя содержат 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];
    }
}];

person jacobsieradzki    schedule 01.04.2014    source источник
comment
ваш код выглядит нормально, какую проблему вы получаете?   -  person james075    schedule 01.04.2014
comment
сделать два запроса отдельно и переместить объекты в один и тот же изменяемый массив. перезагрузить tableView после этого   -  person Abin George    schedule 01.04.2014


Ответы (2)


То, что вы пытаетесь сделать, это получить союз (ИЛИ) двух наборов, а не их пересечение (И)

используйте следующий код, чтобы показать вам всех пользователей, которые соответствуют любому из этих критериев.

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

person rockstarr    schedule 01.04.2014

Когда ты говоришь

поэтому все пользователи, чье имя пользователя равно self.searchText, и все пользователи, чье полное имя равно self.searchText

на самом деле вы имеете в виду OR вместо AND (потому что AND - это то, что делает ваш текущий код).

Чтобы создать отношение OR, вам нужно будет создать 2 разных запроса, а затем использовать orQueryWithSubqueries: для их объединения.

person Wain    schedule 01.04.2014