我正在尝试searchDisplayController
通过在 parse.com 上搜索对象来将结果过滤到 a 中。我可以成功搜索对象并使用 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";
我不明白为什么这不起作用,因为过滤后的数组显然是一个数组,并且过滤后的数组正在输出中正确生成。