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]\%@?