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]];
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]];
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 NSInteger
tem o método stringValue
que 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)
%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 ".
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 NSInteger
em um NSNumber
objeto 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];