2011-09-10 5 views
64

Tengo un NSArray y necesito filtrar las cadenas que son nulas o, mejor dicho, tienen '' (cadena vacía). ¿Cómo puedo hacer eso? He intentado hacer:NSPredicar para probar NULL, y cadenas en blanco

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

pero eso no parece funcionar. O tal vez lo hace pero hay diferentes tipos de nula ...

Respuesta

130

Si no se utiliza la base de datos, se puede hacer:

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

Si la cadena está vacía, esto se producirá un error (porque 0 == 0) Del mismo modo, si name es nil, también fallará, porque [nil length] == 0.

+0

Entonces, ¿cuál es el compañero de solución? En realidad, este parece funcionar para mí, ya que la primera respuesta no funciona. Si la cadena está vacía, entonces la longitud no es = 0? no es nulo – Doz

+0

@Doron la solución es usar el predicado que sugerí. –

+0

Lo sentimos, pero aún obtengo (nulo) en ciertos campos. Así que no estoy seguro de lo que quería decir con su comentario después del código. == 0 entonces está diciendo que está obteniendo un valor de 0, entonces todo lo que necesito para probar es> 0. para ser 1. Porque todavía estoy obteniendo (nulo) – Doz

63

Creo que esto debería funcionar:

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

Esto funcionó bien en mi caso. Gracias. – Isuru

+2

Esto funciona también para los predicados de base de datos de Realm. Gracias. – mtb

5

Este predicado trabajó para mí:

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