2014-11-10 18 views
5

sto usando seguente NSPredicate per il filtraggio,NSPredicate - caso di filtraggio insensitive per molteplici condizioni

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

Funziona bene, ma è tra maiuscole e minuscole. Ho bisogno che il filtro non abbia distinzione tra maiuscole e minuscole.

Ho provato,

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

Ma genera l'errore

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

non riesco a capire quello che è stato menzionato in this answer. Qualcuno può suggerire cosa dovrei cambiare qui nel filtro sopra?

risposta

15

Sostituire tutto CONTAINS con CONTAINS[c]. La "c" tra parentesi quadre significa maiuscole e minuscole. Puoi anche usare una "d" per renderla insensibile al diacritico. Questo è spiegato nella "Guida alla programmazione del predicato".

+0

Funziona grazie. Troverò su Google tutti i miei problemi di codifica invece di consultare la documentazione Apple. [Questa risposta] (http://stackoverflow.com/a/1669433/756941) mi ha portato a utilizzare la parola chiave "ANY" per non sensibile al maiuscolo/minuscolo. Si prega di aggiungere il link in cui è menzionato nella guida Predicate Programming. – NAZIK