0

searchDisplayControllerparse.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";

フィルター処理された配列は明らかに配列であり、フィルター処理された配列は出力で正しく生成されているため、これが機能しない理由がわかりません。

4

1 に答える 1