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];