2014-11-10 6 views
5

Ich verwende folgende NSPredicate zum Filtern,NSPredicate - Groß- und Kleinschreibung Filterung für mehrere Bedingungen

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

Es funktioniert gut, aber es ist case-sensitive. Ich brauche die Filterung sollte Groß-und Kleinschreibung beachten.

Ich habe versucht, wirft

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

Aber es den Fehler

*** 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.' 

Ich kann nicht verstehen, was es in this answer erwähnt wurde. Kann mir jemand vorschlagen, was ich hier bei der obigen Filterung ändern soll?

Antwort

15

Alle CONTAINS durch CONTAINS[c] ersetzen. Das "c" in eckigen Klammern bedeutet Groß-/Kleinschreibung. Sie können auch ein "d" verwenden, um es diakritisch unempfindlich zu machen. Dies wird im "Prädikat-Programmierleitfaden" erklärt.

+0

Es funktioniert dank. Ich werde alle meine Coding-Probleme googlen, anstatt Apple-Dokumentation zu sehen. [Diese Antwort] (http://stackoverflow.com/a/1669433/756941) führte mich dazu, das Schlüsselwort "ANY" für die Groß-/Kleinschreibung zu verwenden. Bitte fügen Sie den Link, wo es in Predicate Programming Guide erwähnt wird, hinzu. – NAZIK