NSPredicate - 多条件不区分大小写过滤

5

我正在使用以下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.'

我不理解在这个回答中提到的内容。有人能建议我在上面的过滤中应该改变什么吗?

1个回答

17
将所有的CONTAINS替换为CONTAINS[c]。中括号中的"c"表示大小写不敏感。您也可以使用"d"使其无重音符号敏感。此功能在“谓词编程指南”中有详细解释。

1
它正常运行了,谢谢。我将会在谷歌上查找所有的编程问题,而不是去看苹果文档。这个答案 告诉我使用 ANY 关键字来实现大小写不敏感。请添加链接到谓词编程指南中提到的位置。 - Nazik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接