Comment se convertit-on NSInteger
au NSString
type de données?
J'ai essayé ce qui suit, où le mois est un NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Comment se convertit-on NSInteger
au NSString
type de données?
J'ai essayé ce qui suit, où le mois est un NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Réponses:
Les NSIntegers ne sont pas des objets, vous les castez long
afin de correspondre à la définition actuelle des architectures 64 bits:
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
[@(integerValue) stringValue]
est une approche plus propre.
Voie Obj-C =):
NSString *inStr = [@(month) stringValue];
An NSInteger
a la méthode stringValue
qui peut être utilisée 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 casts ni avertissements sur les architectures 32 bits et 64 bits. Je n'ai aucune idée pourquoi ce n'est pas la " voie recommandée ".
NSString *string = [NSString stringWithFormat:@"%zd", month];
Si vous souhaitez savoir pourquoi cela fonctionne, consultez cette question .
Façon simple de faire:
NSInteger value = x;
NSString *string = [@(value) stringValue];
Voici les @(value)
convertit les données NSInteger
à un NSNumber
objet pour lequel vous pouvez appeler la fonction nécessaire, stringValue
.
Lors de la compilation avec le support de arm64
, cela ne générera pas d'avertissement:
[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
Vous pouvez également essayer:
NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];
Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')
. Au lieu de cela, selon les documents Apple , je suis allé avecNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];