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]];
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];
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];
[@(integerValue) stringValue]
est une approche plus propre.Voie Obj-C =):
la source
Objectif-C moderne
An
NSInteger
a la méthodestringValue
qui peut être utilisée même avec un littéralTrès simple. N'est-ce pas?
Rapide
la source
%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 ".Si vous souhaitez savoir pourquoi cela fonctionne, consultez cette question .
la source
Façon simple de faire:
Voici les
@(value)
convertit les donnéesNSInteger
à unNSNumber
objet pour lequel vous pouvez appeler la fonction nécessaire,stringValue
.la source
Lors de la compilation avec le support de
arm64
, cela ne générera pas d'avertissement:la source
Vous pouvez également essayer:
la source
La réponse est donnée mais pensez que dans certaines situations, ce sera également un moyen intéressant d'obtenir une chaîne de NSInteger
la source
NSNumber peut être bon pour vous dans ce cas.
la source