147 votes

Comment convertir le type de données NSInteger en NSString ?

Comment convertir NSInteger à la NSString type de données ?

J'ai essayé ce qui suit, où le mois est un NSInteger :

  NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];

281voto

luvieere Points 19689

NSIntégrateurs ne sont pas des objets, vous les mettez sous forme de long afin de correspondre à la définition des architectures 64 bits actuelles :

NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];

11 votes

J'ai essayé ça, mais j'ai eu un message d'avertissement. Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *') . Au contraire, selon Documents d'Apple j'ai choisi NSString *inStr = [NSString stringWithFormat:@"%d", (int)month];

8 votes

Notez que sur les processeurs 64 bits, comme la nouvelle puce A7, si votre application est compilée pour 64 bits, un NSInteger est en fait un long, et non un int. Effectuer le cast, (int)month serait destructeur sur les plateformes 64 bits pour le cas générique. Si vous visez exclusivement les plateformes Apple, préférez la méthode Objective-C comme dans la réponse d'Aleksey Kozhevnikov, ou quelque chose de similaire qui fonctionnera à la fois avec int et long -- par exemple long ;-) Un exemple, bien que non signé (c'est-à-dire non négatif), se trouve dans la réponse d'Andreas Ley.

1 votes

@Steven J'ai essayé d'effacer la réponse pour que les réponses actuelles, plus pertinentes, apparaissent et soient acceptées, mais apparemment, les réponses acceptées ne peuvent pas être effacées. J'ai donc essayé d'ajuster au moins son contenu afin de fournir autant d'informations utiles que possible aux personnes cherchant une solution rapide qui ne déclenche pas d'avertissements.

193voto

Obj-C way =) :

NSString *inStr = [@(month) stringValue];

83voto

MadNik Points 1131

Objective-C moderne

Un site NSInteger a la méthode stringValue qui peut être utilisé même avec un

NSString *integerAsString1 = [@12 stringValue];

NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];

C'est très simple. N'est-ce pas ?

Swift

var integerAsString = String(integer)

2voto

Andreas Ley Points 4830

Lors de la compilation avec le support de arm64 cela ne générera pas d'avertissement :

[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];

2voto

NeverHopeless Points 3962

Vous pouvez également essayer :

NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X