66 votes

Comment dois-je passer un int en stringWithFormat?

Je suis d'essayer d'utiliser stringWithFormat pour définir une valeur numérique sur la propriété text d'une étiquette, mais le code suivant ne fonctionne pas. Je ne peut pas lancer de l'int de NSString. Je m'attendais à ce que la méthode serait de savoir comment faire pour convertir automatiquement un int à NSString.

Que dois-je faire ici?

- (IBAction) increment: (id) sender
{
    int count = 1;
    label.text = [NSString stringWithFormat:@"%@", count];
}

126voto

BobbyShaftoe Points 19925

Faire cela:

label.text = [NSString stringWithFormat:@"%d", count];

48voto

Marc Charbonneau Points 30464

Gardez à l'esprit que @"%d", ne fonctionne sur 32 bits. Une fois que vous commencez à utiliser NSInteger pour la compatibilité si jamais vous compilez pour une plate-forme 64 bits, vous devez utiliser @"%ld" comme spécificateur de format.

41voto

squelart Points 5118

Marc Charbonneau a écrit:

Gardez à l'esprit que @"%d", ne fonctionne sur 32 bits. Une fois que vous commencez à utiliser NSInteger pour la compatibilité si jamais vous compilez pour une plate-forme 64 bits, vous devez utiliser @"%ld" comme spécificateur de format.

Intéressant, merci pour l'astuce, j'ai été en utilisant @"%d" avec mon NSIntegers!

La documentation du kit de développement recommande aussi de jeter NSInteger de long dans ce cas (pour correspondre à la @"%ld"), par ex.:

NSInteger i = 42;
label.text = [NSString stringWithFormat:@"%ld", (long)i];

Source: Chaîne Guide de Programmation du Cacao, de la Chaîne de formatage (Nécessite un iPhone developer registration)

24voto

Zach Langley Points 3523

Vous souhaitez utiliser %d ou %i pour les entiers. %@ est utilisé pour les objets.

Il convient de noter, cependant, que le code suivant va accomplir la même tâche et est beaucoup plus claire.

label.intValue = count;

13voto

squelart Points 5118

Et pour le comique de la valeur:

label.text = [NSString stringWithFormat:@"%@", [NSNumber numberWithInt:count]];

(Bien qu'il pourrait être utile si un jour vous avez à traiter avec des NSNumber)

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