NSPredicate – 针对多个条件的大小写不敏感的过滤
我正在使用以下NSPredicate进行过滤,
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(firstName CONTAINS %@ ) OR (lastName CONTAINS %@ )OR (UserName CONTAINS %@ ) ", myText,myText,myText]; NSArray *filtered = [responseArray filteredArrayUsingPredicate:predicate];
它工作正常,但是区分大小写。 我需要的过滤应该不区分大小写。
我试过了,
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY firstName CONTAINS %@ ) OR (ANY lastName CONTAINS %@ )OR (ANY UserName CONTAINS %@ ) ", myText,myText,myText];
但它会抛出错误
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'The left hand side for an ALL or ANY operator must be either an NSArray or an NSSet.'
我不明白这个答案中提到的是什么。 任何人都可以build议在上面的过滤中,我应该改变什么?
将CONTAINS
全部replace为CONTAINS[c]
。 方括号中的“c”表示不区分大小写。 您也可以使用“d”使其变音符不敏感。 这在“Predicate Programming Guide”中有解释。