comprobar si NSNumber está vacío
¿Cómo verifico si un objeto NSNumber es nulo o está vacío?
OK nil es fácil:
NSNumber *myNumber;
if (myNumber == nil)
doSomething
Pero si el objeto se ha creado, pero no tiene ningún valor porque falló una asignación, ¿cómo puedo verificar esto? Usa algo como esto?
if ([myNumber intValue]==0)
doSomething
¿Existe un método general para probar objetos en el vacío como NSString disponible (vea estoenviar)?
Ejemplo 1
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *emptyNumber = [dict objectForKey:@"emptyValue"];
¿Qué valor haceemptyNumber
¿Contiene? ¿Cómo puedo verificar siemptyNumber
¿esta vacio?
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?emptyNumber
fue puesto 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!");
De esta manera, nunca se llama a NSLog.myEmptyValue
no esnil
y noNSNull
. ¿Entonces contiene un número arbitrario?