2010-06-05 3 views
1

J'ai une méthode Objective-C qui formate un double à une monnaie NSString:La valeur NSString n'est pas la même pour tous les appels de méthode?

- (NSString*) formatCurrencyValue:(double)value 
{ 
    NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
    [numberFormatter setFormatterBehavior:NSNumberFormatterBehaviorDefault]; 
    [numberFormatter setCurrencySymbol:@"$"]; 
    [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
    NSNumber *c = [NSNumber numberWithFloat:value]; 

    NSString* stringValue = [numberFormatter stringFromNumber:c]; 

    NSLog(@"currencyFormatter=%@",stringValue); 

    return stringValue; 
} 

L'impression est correcte déclaration NSLog double format. Toutefois, lorsque j'appelle cette méthode et lui affecte un autre objet NSString, sa valeur est vide.

Par exemple:

NSString* key = [self formatCurrencyValue:menuItem.Price]; 

NSLog(@"Key value=", key); 

La sortie de la déclaration NSLog il y a:

valeur clé =

Qu'est-ce qui se passe ???

Répondre

1

Sur la ligne NSLog(@"Key value=", key);, il vous manque l'espace réservé %@ qui indique à Objective-C où imprimer l'argument.

Il doit s'agir de NSLog(@"Key value=%@", key);.

+0

Malédiction du @%! Merci! –

+0

@Wayne: De rien. On pourrait penser que le compilateur vous avertirait lorsque vous avez passé trop d'arguments par rapport aux spécificateurs de format, mais je me souviens avoir lu quelque part qu'il y a une raison spécifique pour laquelle cela n'est pas fait dans Objective-C ... –

Questions connexes