¿Cómo verifico si un objeto NSNumber es nulo o está vacío?compruebe si NSNumber está vacío
OK nula es fácil:
NSNumber *myNumber;
if (myNumber == nil)
doSomething
Pero si el objeto ha sido creado, pero no hay ningún valor en ella porque una misión fracasó, ¿cómo puedo comprobar esto? Usa algo como esto?
if ([myNumber intValue]==0)
doSomething
¿Hay un método general para el ensayo de los objetos en el vacío como por NSString disponibles (ver este post)?
Ejemplo 1
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *emptyNumber = [dict objectForKey:@"emptyValue"];
Qué valor no contienen emptyNumber
? ¿Cómo puedo verificar si emptyNumber
está vacío?
Ejemplo 2
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSString *myString = [dict objectForKey:@"emptyValue"];
if (myString == nil || [myString length] == 0)
// got an empty value
NSNumber *emptyNumber=nil;
¿Qué pasa si uso esto después de emptyNumber
se fijó a cero?
[emptyNumber intValue]
¿Obtengo cero?
Ejemplo 3
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *myEmptyValue = [dict objectForKey:@"emptyValue"];
if (myEmptyValue == nil)
// NSLog is never called
NSLog(@"It is empty!");
gusta esta manera NSLog nunca es llamado. myEmptyValue
no es nil
y no NSNull
. ¿Entonces contiene un número arbitrario?
@ [0.7] le daré una NSNumber que definitivamente no es cero, pero intValue devolverá 0. Entonces esa es una mala prueba. – gnasher729
Upvoted por el gran detalle que ayudó a explicar algo que estoy tratando de los valores predeterminados. NSNumber * savedPin = [[NSUserDefaults standardUserDefaults] valueForKey: @ "someKey"]; devuelve un objeto que tiene la clase __NSCFConstantString y, por lo tanto, las comparaciones con cero fallaron. ¡GRACIAS! –