¿Cómo comprobar si el valor en la matriz no es NULL?

Así que estoy parsing una línea de time de twitter. Hay un campo llamado "siguiente" en la respuesta JSON. Debe ser verdadero o falso.

Pero a veces falta el campo.

Cuando lo hago:

NSLog(@"%@", [[[timeline objectAtIndex:i] objectForKey:@"user"] objectForKey:@"following"]); 

Este es el resultado:

 1 1 0 0 1 <null> 1 1 

Entonces, ¿cómo verificar esos valores?

NSArray y otras collections no pueden tomar nil como valor, ya que nil es el "valor centinela" para cuando finaliza la colección. Puede encontrar si un object es nulo mediante el uso de:

 if (myObject == [NSNull null]) { // do something because the object is null } 

Si falta el campo, NSDictionary -objectForKey: devolverá un puntero nulo. Puede probar un puntero nil como este:

 NSNumber *following = [[[timeline objectAtIndex:i] objectForKey:@"user"] objectForKey:@"following"]; if (following) { NSLog(@"%@", following); } else { // handle no following field NSLog(@"No following field"); } 

No es el elemento de línea de time nulo. Es el dictionary "usuario" o el object "siguiente" que es nulo. Recomiendo crear una class de model de usuario para encapsular parte del desorder de json / dictionary. De hecho, apuesto a que puedes encontrar una API de Twitter de código abierto para iOS.

De cualquier manera, su código sería más legible como algo así:

 TwitterResponse *response = [[TwitterResponse alloc] initWithDictionary:[timeline objectAtIndex:i]]; NSLog(@"%@", response.user.following); 

TwitterResponse anterior implementaría un TwitterUser *user propiedad de TwitterUser *user que a su vez implementaría NSNumber *following . Usando NSNumber porque permitiría valores nulos (cadenas vacías en la respuesta JSON).

Espero que esto te ayude a seguir el path correcto. ¡Buena suerte!

para comprobar la matriz que contiene el valor nulo, use este código.

 if ([array objectAtIndex:0] == [NSNull null]) { //do something } else { }