Iphone NSCompoundPredicate不适用于多个谓词

Iphone NSCompoundPredicate不适用于多个谓词,iphone,objective-c,ios,Iphone,Objective C,Ios,以下是我的谓词: 1) category.enabled == 1 AND (author CONTAINS[c] "John" OR city CONTAINS[c] "John" OR state CONTAINS[c] "John") 2) category.enabled == 1 AND (author CONTAINS[c] "dallas" OR city CONTAINS[c] "dallas" OR state CONTAINS[c] "dallas") 3) catego

以下是我的谓词:

1) category.enabled == 1 AND (author CONTAINS[c] "John" OR city CONTAINS[c] "John" OR state CONTAINS[c] "John")

2) category.enabled == 1 AND (author CONTAINS[c] "dallas" OR city CONTAINS[c] "dallas" OR state CONTAINS[c] "dallas")

3) category.enabled == 1 AND ((author CONTAINS[c] "John" OR city CONTAINS[c] "John" OR state CONTAINS[c] "John") OR (author CONTAINS[c] "dallas" OR city CONTAINS[c] "dallas" OR state CONTAINS[c] "dallas"))
下面是如何构造它的代码:

-(void)findString:(NSString *)string {
    
    if (!string) {
        string = @"";
    }
    NSMutableArray *predicatesArray = [NSMutableArray array];
    NSArray *searchQueriesArray = [string componentsSeparatedByString:@" "];
    NSPredicate *categoryPredicate = [NSPredicate predicateWithFormat:@"category.enabled == %@",[NSNumber numberWithBool:YES]];
    for(NSString *query in searchQueriesArray){
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"author CONTAINS[cd] %@ OR city CONTAINS[cd] %@ OR state CONTAINS[cd] %@", query, query, query];
        [predicatesArray addObject:predicate];
    }
    NSPredicate *fieldsSearchPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:predicatesArray];
    NSArray *searchPredicatesArray = [NSArray arrayWithObjects:categoryPredicate,fieldsSearchPredicate, nil];
    NSPredicate *searchPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:searchPredicatesArray];
    self.tracks = [Track findAllSortedBy:@"name" ascending:YES withPredicate:searchPredicate];
    
    [self.tableView reloadData];
}
1谓词是用string=John构造的; 带字符串的2=达拉斯; 带字符串的3=约翰·达拉斯


所以问题是:使用1或2谓词搜索会返回结果,但使用3则不会返回任何结果

您确定格式字符串中的%@符号周围不需要引号吗?我不确定它是否会起作用,但您是否可以尝试这种格式:@author CONTAINS[cd]\%@或city CONTAINS[cd]\%@或state CONTAINS[cd]\%@?您确定格式字符串中的%@符号周围不需要引号吗?我不确定它是否会做任何事情,但您能试试这种格式吗:@author CONTAINS[cd]\%@或city CONTAINS[cd]\%@或state CONTAINS[cd]\%@?