Como alguém se converte NSIntegerno NSStringtipo de dados?
Eu tentei o seguinte, em que mês é um NSInteger:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Como alguém se converte NSIntegerno NSStringtipo de dados?
Eu tentei o seguinte, em que mês é um NSInteger:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Respostas:
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];
[@(integerValue) stringValue]é uma abordagem mais limpa.
Obj-C maneira =):
NSString *inStr = [@(month) stringValue];
Um NSIntegertem o método stringValueque pode ser usado mesmo com um literal
NSString *integerAsString1 = [@12 stringValue];
NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];
Muito simples. Não é?
var integerAsString = String(integer)
%zdfunciona para NSIntegers ( %tupara 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 ".
NSString *string = [NSString stringWithFormat:@"%zd", month];
Se você estiver interessado em saber por que isso funciona, consulte esta pergunta .
Maneira fácil de fazer:
NSInteger value = x;
NSString *string = [@(value) stringValue];
Aqui, @(value)converte o dado NSIntegerem um NSNumberobjeto para o qual você pode chamar a função necessária stringValue,.
Ao compilar com suporte para arm64, isso não gera um aviso:
[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
Você também pode tentar:
NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];
O NSNumber pode ser bom para você neste caso.
NSString *inStr = [NSString stringWithFormat:@"%d",
[NSNumber numberWithInteger:[month intValue]]];
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];