2010-06-09 2 views
1

Quand je lance ce code:Objective-C stringWithFormat manque un argument?

- (NSString *)description{ 
    return [NSString stringWithFormat:@"(FROG idle:%i animating:%i rect:%@ position:%@ tongue:%@)", 
            self.idleTime, 
            self.animating, 
            NSStringFromCGRect(self.rect), 
            NSStringFromCGPoint(self.position), 
            tongue 
      ]; 
} 

Je reçois la sortie suivante:

(FROG idle:0 animating:0 rect:(null) position:{{1,2}{3,4}} tongue:{5,6}) 

Ceci est faux car il semble sauter la chaîne de format rect et en plaçant tout déplacé par un. Donc, si je ne m'y attends pas, alors rect est ignoré, mais le résultat de NSStringFromCGRect (self.rect) est placé en position, alors le résultat de la position est poussé vers la langue, alors la langue n'est pas affichée du tout.

Je suis à perte.

Répondre

1

Je ne peux pas le dire sans les déclarations de idleTime et d'animation, mais l'un ou les deux est probablement le mauvais type pour le spécificateur% i. Peut-être que idleTime est un double (NSTimeInterval)?

Selon ce que leurs types réels sont, vous pouvez les convertir en int:

       (int)self.idleTime, 
           (int)self.animating, 
+0

c'était la réponse. J'ai changé la chaîne de format nstimeinterval de% i à% a, car il s'agit d'une valeur double. tout est fixé! Merci! Je pense que je pourrais avoir été un peu fatigué –

1

self.rect ne doit pas être un CGRect valide. Êtes-vous sûr de ne pas vouloir dire self.frame?

Questions connexes