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
NSIntegertipos de datos cuando sea posible. Entonces crearías el número así:La decodificación funciona con el
integerValuemétodo entonces:fuente
NSInteger?intTambién es primitivo, sí. Sin embargo, su número máximo permitido se define con menos precisión.NSIntegeres 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_tsería mejor usar.Use el método NSNumber
intValueAquí está la documentación de referencia de Apple
fuente
Un enfoque menos detallado:
fuente
Una línea probada:
fuente