2011-09-10 16 views
64

Ho un NSArray e ho bisogno di filtrare qualsiasi stringa che sia nullo o meglio, abbia '' (stringa vuota). Come lo faccio? Ho provato a fare:NSPredicate per testare NULL e stringhe vuote

NSPredicate *predicateName = [NSPredicate predicateWithFormat:@"(name!=nil)"]; 

ma quello non sembra funzionare. O forse lo fa, ma ci sono diversi tipi di nulla ...

risposta

130

Se non si utilizza Core Data, si potrebbe fare:

NSPredicate *predicateName = [NSPredicate predicateWithFormat:@"name.length > 0"]; 

Se la stringa è vuota, questa avrà esito negativo (perché 0 == 0). Allo stesso modo, se name è nil, fallirà anche, perché [nil length] == 0.

+0

Allora qual è il compagno di soluzione? Questo in realtà sembra funzionare per me dove la prima risposta non lo è. Se la stringa è vuota, quindi non lunghezza = 0? non è nullo – Doz

+0

@Doron la soluzione è utilizzare il predicato che ho suggerito. –

+0

Scusa amico ma ottengo ancora (null) in alcuni campi. Quindi non sono sicuro di cosa intendessi per commento dopo il codice. == 0 quindi stai dicendo che stai ottenendo il valore 0, quindi tutto quello che devo testare è> 0. essere 1. Perché sto ancora ottenendo (null) – Doz

63

Penso che questo dovrebbe funzionare:

NSPredicate *predicateName = [NSPredicate predicateWithFormat:@"name!=nil AND name!=''"]; 
+0

Questo ha funzionato bene nel mio caso. Grazie. – Isuru

+2

Questo funziona anche per i predicati del database Realm. Grazie. – mtb

5

Questo predicato funzionato per me:

[NSPredicate predicateWithFormat:@"(%K== nil) OR %K.length == 0", @"imageUrl", @"imageUrl"] 
10
NSPredicate *predicateName = [NSPredicate predicateWithFormat:@"name!=NULL"]; 
Problemi correlati