NSPredicate - 针对多种情况的不区分大小写的过滤

Azi*_*lah 5 cocoa-touch objective-c nsmutablearray nspredicate ios

我正在使用NSPredicate进行过滤,

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(firstName CONTAINS %@ ) OR (lastName CONTAINS %@  )OR (UserName CONTAINS %@ )  ", myText,myText,myText];
NSArray *filtered = [responseArray filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)

它工作正常,但它区分大小写.我需要过滤应该不区分大小写.

我试过了,

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY firstName CONTAINS %@ ) OR (ANY lastName CONTAINS %@  )OR (ANY UserName CONTAINS %@ )  ", myText,myText,myText];
Run Code Online (Sandbox Code Playgroud)

但它会引发错误

*** 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.'
Run Code Online (Sandbox Code Playgroud)

我无法理解这个答案中提到的是什么.任何人都可以建议我在上面的过滤中应该更改什么?

rde*_*mar 16

更换所有CONTAINSCONTAINS[c].方括号中的"c"表示不区分大小写.您还可以使用"d"使其变音符号不敏感.这在"谓词编程指南"中有解释.