Uso [NSNumber numberWithInt:42]
o @(42)
para convertir un int a NSNumber antes de agregarlo a un NSDictionary:
int intValue = 42;
NSNumber *numberValue = [NSNumber numberWithInt:intValue];
NSDictionary *dict = @{ @"integer" : numberValue };
Cuando recupero el valor de NSDictionary, ¿cómo puedo transformarlo de NSNumber de nuevo a int?
NSNumber *number = dict[@"integer"];
int *intNumber = // ...?
Lanza una excepción que dice que se requiere conversión cuando lo hago de esta manera:
int number = (int)dict[@"integer"];
objective-c
nsnumber
suse
fuente
fuente
[key intValue]
(la clave esNSNumber
)Debe atenerse a los
NSInteger
tipos de datos cuando sea posible. Entonces crearías el número así:La decodificación funciona con el
integerValue
método entonces:fuente
NSInteger
?int
También es primitivo, sí. Sin embargo, su número máximo permitido se define con menos precisión.NSInteger
es esencialmente un alias de algún tipo entero primitivo que se sabe que es de 32 bits en máquinas de 32 bits y 64 bits en dispositivos de 64 bits.int
, pero no tiene mucho sentido hacerlo, excepto para interactuar con libs multiplataforma. E incluso entonces, algo asíuint32_t
sería mejor usar.Use el método NSNumber
intValue
Aquí está la documentación de referencia de Apple
fuente
Un enfoque menos detallado:
fuente
Una línea probada:
fuente