Me gustaría convertir un int
en un NSString
en Objective C.
¿Cómo puedo hacer esto?
objective-c
Yogini
fuente
fuente
NSString *strValue = @(myInt).stringValue;
stringValue
, pero todos sídescription
, por lo que, como buena práctica, es mejor acostumbrarse a usarlosdescription
(NSNumber
sí, no hay necesidad de preocuparse aquí). Prueba esto (description
imprimirá la fecha, perostringValue
fallará):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
@(myInt)
es una expresión en caja para[NSNumber numberWithInt:]
y siempre devolverá un NSNumber cuando se le dé un int.[NSNumber stringValue]
siempre devolverá un NSString. En el código de su comentario, forzar la transmisión(id)
y la asignación a un tipo diferente es un claro error de programación: nunca debe hacer eso. Es como mezclar un método y luego argumentar que ese método no está haciendo lo que estaba haciendo originalmente.!
) y descubrirá que lo estaba haciendo mal en Objective-C. Si el objetotest
no fue creado por usted, entonces no es su responsabilidad. Puede intentar llamarisKindOfClass:
a todos sus parámetros recibidos, pero incluso eso puede ser engañado (pasando una estructura en lugar de un NSObject, por ejemplo). Así que no lo haga: simplemente documente explícitamente los tipos esperados.(id)
es un error, fue solo para demostrar el punto en el quedescription
se prefiere a la OMIstringValue
(puedo estar equivocado, no he programado en ObjC durante años)fuente
@(myInt)
es una expresión en caja , devuelve un NSNumber.Ésta es una de las muchas formas.
fuente
Si esta cadena es para presentarla al usuario final, debe usar
NSNumberFormatter
. Esto agregará miles de separadores y respetará la configuración de localización para el usuario:En los EE. UU., Por ejemplo, eso crearía una cadena
10,000
, pero en Alemania, eso sería10.000
.fuente