2014-04-01 116 views
0

我想混合使用兩個PFQuery結果。在我的代碼中,我得到了兩個結果的交集結果(因此所有用戶名和全名的用戶都包含self.searchText),我想包含所有結果(因此所有用戶名爲self.searchText的用戶以及所有用戶fullName等於self.searchText)。混合兩個PFQuery結果

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]; 
    } 
}]; 
+0

你的代碼似乎罰款,你得到了什麼問題? – james075

+0

分別做兩個查詢並將對象移動到同一個可變數組。之後重新加載tableView –

回答

7

你所要做的就是讓聯盟(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

0

當你說

所以誰的用戶名等於self.searchText和誰的全名等於self.searchText

你真正的意思是OR所有用戶的所有用戶,而不是AND (因爲AND是你當前的代碼所做的)。

要創建一個OR關係,您需要創建2個不同的查詢,然後使用orQueryWithSubqueries:來合併它們。