ios - cómo comprobar si NSString es nulo o no
objective-c xcode (5)
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo detectar si NSString es nulo? 5 respuestas
Quiero verificar el tiempo en que un NSString
es nulo o no. Im la asignación de una matriz JSON. Después de asignar ese valor de cadena es <null>
. Ahora quiero comprobar si esta cadena es nula o no. Así que me puse así
if (myStringAuthID==nil)
pero esta declaración if siempre es falsa. ¿Cómo puedo comprobar una cadena para null. por favor, ayúdame
Gracias
Aquí es parte de una categoría de cadena que he creado:
@interface NSString (Enhancements)
+(BOOL)isNullOrEmpty:(NSString *)inString;
@end
@implementation NSString (Enhancements)
+(BOOL)isNullOrEmpty:(NSString *)inString
{
BOOL retVal = YES;
if( inString != nil )
{
if( [inString isKindOfClass:[NSString class]] )
{
retVal = inString.length == 0;
}
else
{
NSLog(@"isNullOrEmpty, value not a string");
}
}
return retVal;
}
@end
Como eso:
[myString isEqual: [NSNull null]];
Creo que es mejor si lo verificas antes de enviarlo a una NSString o lo que sea, tienes diferentes opciones, las anteriores son correctas, pero prefiero esto:
id NilOrValue(id aValue) {
if ((NSNull *)aValue == [NSNull null]) {
return nil;
}
else {
return aValue;
}
}
Al usar este fragmento de código (preste atención a la función C) antes de pasar el valor a un puntero, puede pasar con seguridad un valor o nulo si el valor está en NSNull. Pasar nil es genial, porque si envías un mensaje a un objeto nulo, no produce una excepción. También puede verificar el tipo de clase con -isKindOfClass
.
Hay tres interpretaciones posibles de NSString "null":
-
someStringPtr == nil
-
(id)someStringPtr == [NSNull null]
-
someStringPtr.length == 0
Si puede tener la posibilidad de los 3, el tercer cheque subsume el primero, pero no conozco un cheque simple para los tres.
En general, JSON devolverá [NSNull null]
para un null
JSON null
, pero algunos kits pueden devolver @""
(longitud == 0) en su lugar. nil
nunca se utilizará en iOS, ya que no se puede colocar en matrices / diccionarios.
Probar if(myString == [NSNull null])
. Eso debería evaluarlo correctamente.