objective c - Objetivo C-Tipo Casting desde NSString a Int
objective-c (4)
Cuando convierte un objeto en un entero, obtendrá el puntero a la dirección de la memoria. Puede llamar a [a integerValue]
valor entero [a integerValue]
para obtener el valor entero de la cadena.
Además, cuando se emite, es mejor usar NSInteger
instate of int
. Porque cuando se usa un sistema operativo de 64 bits, un NSInteger
será de 64 bits.
Tengo este código de Objective C, donde estoy lanzando un NSString
a un int
:
NSString *a=@"123abc";
NSInteger b=(int) a;
NSLog(@"b: %d",b);
Y el NSLog
produce esta salida:
b: 18396
¿Alguien puede explicarme por qué esto está sucediendo?
Estaba bajo el tipo de impresión al convertir una cadena en un entero obtendría el valor numérico de la cadena.
O con la sintaxis de Objective-C literals:
@([a intValue]);
Para obtener el valor numérico use:
int val = [stringObj intValue];
o para NSInteger
:
NSInteger val = [stringObj integerValue];
Tienes un valor entero de puntero al objeto NSString
allí. Para analizar la cadena a un entero debes hacer:
NSString *a = @"123abc";
NSInteger b = [a integerValue];