我在获取NSNumberFormatter的currencySymbol时遇到问题。
我使用带有货币代码“EUR”的NSNumberFormatter。
当我格式化价格时,该符号正确,我得到了€符号。
但是,当我只想使用[formatter currencySymbol]方法获取currencySymbol时,将返回符号$。
如果我手动设置currencySymbol(例如,以“A”表示),一切都会正常运行,并且[formatter currencySymbol]方法将返回“A”符号。

这是我的代码

// Create formatter
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setCurrencyCode:@"EUR"];
[formatter setLocale:[NSLocale currentLocale]];

// Log the currency symbol
NSLog(@"[formatter currencyCode] : %@", [formatter currencyCode]);
NSLog(@"[formatter currencySymbol] : %@", [formatter currencySymbol]);
NSLog(@"[formatter currencySymbol] : %@", [formatter stringFromNumber:[NSNumber numberWithInt:0]]);
[formatter setCurrencySymbol:@"A"];
NSLog(@"[formatter currencySymbol] : %@", [formatter currencySymbol]);
NSLog(@"[formatter currencySymbol] : %@", [formatter stringFromNumber:[NSNumber numberWithInt:0]]);

这是控制台结果:
2012-01-17 12:29:11.108[4545:207] [formatter currencySymbol] : $
2012-01-17 12:29:11.109[4545:207] [formatter currencySymbol] : €0.00
2012-01-17 12:29:11.110[4545:207] [formatter currencySymbol] : A
2012-01-17 12:29:11.111[4545:207] [formatter currencySymbol] : A0.00

我无法强制使用currencySymbol,因为它可以更改。
有没有一种方法来获取对应于给定currencyCode的正确的currencySymbol?

谢谢

最佳答案

要获取货币符号,可以将NSLocaleCurrencySymbolNSLocale结合使用:

   NSLocale* locale = [NSLocale currentLocale];
   NSString* cs = [locale displayNameForKey:NSLocaleCurrencySymbol
                                 value:currencyCode];

要获取本地化名称(“美元”,“日元”,..),您可以使用NSLocaleCurrencyCode:
   NSLocale* locale = [NSLocale currentLocale];
   NSString* cc = [locale displayNameForKey:NSLocaleCurrencyCode
                              value:currencyCode];

其中currencyCode是您感兴趣的货币代码(JPY,USD,EUR,..)。

09-25 21:15