Comment convertir NSInteger
en type de données NSString
?
J'ai essayé ce qui suit, où month est un NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
NSIntegers ne sont pas des objets, vous les convertissez en long
, afin de correspondre à la définition actuelle des architectures 64 bits:
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
Voie Obj-C =):
NSString *inStr = [@(month) stringValue];
Un NSInteger
a la méthode stringValue
qui peut être utilisé même avec un littéral
NSString *integerAsString1 = [@12 stringValue];
NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];
Très simple. N'est-ce pas?
var integerAsString = String(integer)
%zd
fonctionne pour NSIntegers (%tu
pour NSUInteger) sans envoi ni avertissement sur les architectures 32 bits et 64 bits. Je ne sais pas pourquoi ce n'est pas le " méthode recommandée ".
NSString *string = [NSString stringWithFormat:@"%zd", month];
Si cela vous intéresse, pourquoi cela fonctionne, voyez cette question .
Moyen facile à faire:
NSInteger value = x;
NSString *string = [@(value) stringValue];
Ici, la @(value)
convertit le NSInteger
donné en un objet NSNumber
pour lequel vous pouvez appeler la fonction requise, stringValue
.
Lors de la compilation avec support pour arm64
, cela ne générera pas d'avertissement:
[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
Vous pouvez aussi essayer:
NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];
NSNumber peut être bon pour vous dans ce cas.
NSString *inStr = [NSString stringWithFormat:@"%d",
[NSNumber numberWithInteger:[month intValue]]];
La réponse est donnée, mais pensez que dans certaines situations, ce sera aussi un moyen intéressant d’obtenir une chaîne de caractères de NSInteger.
NSInteger value = 12;
NSString * string = [NSString stringWithFormat:@"%0.0f", (float)value];