searchDisplayController
parse.com でオブジェクトを検索して、結果をフィルター処理しようとしています。オブジェクトを正常に検索して、containsString を使用して表示することはできますが、それはオブジェクトを検索する方法ではありません。を使用してオブジェクトを検索したいと思いますcontainsAllObjectsInArray
。これが正しい方法であるかどうかはわかりませんが、とにかくここに私が試しているコードがあります:
- (void)filterResults:(NSString *)searchTerm {
NSCharacterSet *whitespaces = [NSCharacterSet whitespaceCharacterSet];
NSPredicate *noEmptyStrings = [NSPredicate predicateWithFormat:@"SELF != ''"];
NSArray *parts = [searchTerm componentsSeparatedByCharactersInSet:whitespaces];
NSArray *filteredArray = [parts filteredArrayUsingPredicate:noEmptyStrings];
NSLog(@" filteredArray equals %@", filteredArray);
[self.searchResults removeAllObjects];
PFQuery *query = [PFQuery queryWithClassName: @"Items"];
[query whereKeyExists:@"itemName"];
[query whereKeyExists:@"itemDescription"];
[query whereKey:@"itemName" containsAllObjectsInArray:filteredArray];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if(!error){
for (PFObject *object in objects){
NSLog(@"%@", objects);
NSLog(@"%u", objects.count);
}
dispatch_async(dispatch_get_main_queue(), ^{
[self.searchResults removeAllObjects];
[self.searchResults addObjectsFromArray:objects];
[self.searchDisplayController.searchResultsTableView reloadData];
});
} else {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
}
私の出力では、次のエラーが表示されます。
code = 102;
error = "$all only works on array fields";
フィルター処理された配列は明らかに配列であり、フィルター処理された配列は出力で正しく生成されているため、これが機能しない理由がわかりません。