Como alguém se converte NSInteger
no NSString
tipo de dados?
Eu tentei o seguinte, em que mês é um NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Os NSIntegers não são objetos, você os lança para long
, a fim de corresponder à definição atual das arquiteturas de 64 bits:
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')
. Em vez de acordo com docs da Apple , eu fui comNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];
[@(integerValue) stringValue]
é uma abordagem mais limpa.Obj-C maneira =):
fonte
Objetivo moderno-C
Um
NSInteger
tem o métodostringValue
que pode ser usado mesmo com um literalMuito simples. Não é?
Rápido
fonte
%zd
funciona para NSIntegers (%tu
para NSUInteger) sem conversão e sem avisos nas arquiteturas de 32 e 64 bits. Não tenho ideia de por que essa não é a " maneira recomendada ".Se você estiver interessado em saber por que isso funciona, consulte esta pergunta .
fonte
Maneira fácil de fazer:
Aqui,
@(value)
converte o dadoNSInteger
em umNSNumber
objeto para o qual você pode chamar a função necessáriastringValue
,.fonte
Ao compilar com suporte para
arm64
, isso não gera um aviso:fonte
Você também pode tentar:
fonte
A resposta é dada, mas pense que, para alguma situação, isso também será uma maneira interessante de obter a string do NSInteger
fonte
O NSNumber pode ser bom para você neste caso.
fonte