Eu uso [NSNumber numberWithInt:42]
ou @(42)
para converter um int em NSNumber antes de adicioná-lo a um NSDictionary:
int intValue = 42;
NSNumber *numberValue = [NSNumber numberWithInt:intValue];
NSDictionary *dict = @{ @"integer" : numberValue };
Quando recupero o valor do NSDictionary, como posso transformá-lo de NSNumber em int?
NSNumber *number = dict[@"integer"];
int *intNumber = // ...?
Emite uma exceção dizendo que a conversão é necessária quando eu faço dessa maneira:
int number = (int)dict[@"integer"];
objective-c
nsnumber
suse
fonte
fonte
[key intValue]
(chave éNSNumber
)Você deve manter os
NSInteger
tipos de dados quando possível. Então você criaria o número assim:A decodificação funciona com o
integerValue
método:fonte
NSInteger
?int
também é primitivo, sim. No entanto, seu número máximo permitido é definido com menos precisão.NSInteger
é essencialmente apenas um alias para algum tipo inteiro primitivo que é conhecido por ser de 32 bits em máquinas de 32 bits e 64 bits em dispositivos de 64 bits.int
, mas há pouco sentido em fazer isso, exceto a interface com bibliotecas de plataforma cruzada. E mesmo assim, algo comouint32_t
seria melhor usar.Use o método NSNumber
intValue
Aqui está a documentação de referência da Apple
fonte
Uma abordagem menos detalhada:
fonte
Uma linha testada:
fonte