2014-04-01 2 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

당신이 할하려는 것은 두 집합이 아닌 자신의 교차로 (AND)

당신에게 그 CRITERIAS 중 하나와 일치하는 모든 사용자를 지참 다음 코드를 사용하여 연합을 얻을 수있다 (OR)

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와 fullName의 당신이 정말로 무엇을 의미하는지

OR입니다 self.searchText

동일의 모든 사용자에게 동일의 사용자, 대신 AND (왜냐하면 AND이 현재 코드가하는 것이기 때문입니다).

OR 관계를 만들려면 두 개의 다른 쿼리를 만든 다음 orQueryWithSubqueries:을 사용해야합니다.

관련 문제