2010-06-05 51 views
1

我有格式化double到貨幣NSString Objective-C的方法:不同方法調用的NSString值不一樣嗎?

- (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; 
} 

NSLog說法正確打印格式的兩倍。但是,當我調用此方法並將其分配給另一個NSString對象時,它的值爲空。

例如:

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

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

NSLog語句的輸出有:

Key值=

這是怎麼回事???

回答

1

在行NSLog(@"Key value=", key);中,您遺漏了%@佔位符,它告訴Objective-C在哪裏打印參數。

它應該是NSLog(@"Key value=%@", key);

+0

詛咒@%!謝謝! – 2010-06-05 23:10:35

+0

@Wayne:不客氣。你會認爲當你傳入太多的參數和格式說明符時,編譯器會警告你,但是我記得在某處讀到Objective-C中沒有做到這一點的具體原因...... – 2010-06-05 23:11:36