嘿
我有一个NSDictionaries数组(例如[tempArray addObject:[[[NSMutableDictionary alloc] initWithObjects:someArray forKeys:keys] autorelease]];
),当我尝试用NSPredicate搜索它时,它一直给我'没有结果'。 (TempArray成为self.patientList)
我没有编译时警告或错误,如果我NSLog([self.filteredArray count]);
那么它也会返回0。
以下是我的相关代码:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(first contains[cd] %@)", self.searchBar.text];
self.filteredArray = [self.patientList filteredArrayUsingPredicate:predicate];
return [self.filteredArray count];
self.patientList和self.filteredArray分别是NSMutableArray和NSArray类型(将self.filteredArray更改为NSMutableArray无效)。
我尝试过使用==而不是包含。使用@"SELF contains[cd] %@"
仅在键入完整项目时返回一个项目(即,如果键入'name'是@“Bob”,那么如果我输入Bob它将显示它,但不会在我键入Bo或ob时显示)。
我真的很难过这个。
提前致谢!
答案 0 :(得分:2)
使用谓词时,显然第一个是保留字。来自Apple的文档:
保留以下字样:
AND,OR,IN,NOT,ALL,ANY,SOME, NONE,LIKE,CASEINSENSITIVE,CI, 比赛,包含,BEGINSWITH, ENDSWITH,BETWEEN,NULL,NIL,SELF, TRUE,YES,FALSE,NO, FIRST ,最后, SIZE,ANYKEY,SUBQUERY,CAST, TRUEPREDICATE,FALSEPREDICATE
只需将您的密钥更改为其他名称,也许是firstName,它会起作用。
答案 1 :(得分:0)
您可以使用“like”代替:
first like[c] *%@*
答案 2 :(得分:0)
first
的密钥吗?如果他们这样做,那么它与案件完全匹配吗?