¿Cómo se convierte NSInteger
al NSString
tipo de datos?
Intenté lo siguiente, donde el mes es un NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
NSIntegers no son objetos, a los que los envía long
, para que coincidan con la definición actual de las arquitecturas de 64 bits:
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')
. En lugar de acuerdo con la documentación de Apple , fui conNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];
[@(integerValue) stringValue]
Es un enfoque más limpio.Obj-C way =):
fuente
Objetivo moderno-C
An
NSInteger
tiene el métodostringValue
que puede usarse incluso con un literalMuy simple. ¿No es así?
Rápido
fuente
%zd
funciona para NSIntegers (%tu
para NSUInteger) sin conversiones y sin advertencias en arquitecturas de 32 bits y 64 bits. No tengo idea de por qué esta no es la " forma recomendada ".Si está interesado en por qué esto funciona, vea esta pregunta .
fuente
Manera fácil de hacer:
Aquí los
@(value)
conversos lo dadoNSInteger
a unNSNumber
objeto para el que se puede llamar a la función requerida,stringValue
.fuente
Al compilar con soporte para
arm64
, esto no generará una advertencia:fuente
También puedes probar:
fuente
Se da la respuesta, pero piense que para alguna situación, esta también será una forma interesante de obtener cadenas de NSInteger
fuente
NSNumber puede ser bueno para usted en este caso.
fuente