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.