NSNumberFormatter货币符号

时间:2014-07-14 18:08:26

标签: ios nsnumberformatter currency-formatting

我的应用程序允许用户选择各种货币进行支出跟踪。 我有一个标签,显示带有当前符号的金额。我正在使用NSNumberFormatterkCFNumberFormatterCurrencyStyle格式化金额字符串并将其显示在标签中;

numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.numberStyle = kCFNumberFormatterCurrencyStyle;
numberFormatter.currencyCode = @"EUR";

我的目标是显示不同颜色的货币符号,因此我使用NSAttributedString,尝试查找符号的范围并为其设置不同的属性。问题是格式化程序在我初始化属性字符串时返回错误的符号:

MLOG(@"internationalCurrencySymbol %@", numberFormatter.internationalCurrencySymbol);
MLOG(@"currencySymbol %@", numberFormatter.currencySymbol);
MLOG(@"currencyCode %@", numberFormatter.currencyCode);

//logs:
//USD
//$
//EUR

但是当屏幕上显示标签时,我看到正确的欧元货币符号:

有人知道如何获得给定货币代码的货币符号吗?

1 个答案:

答案 0 :(得分:10)

我刚刚测试了你的代码。如果在按照您的方式定义数字格式化器后立即运行日志语句,则输出为

@"EUR"
@"€"
@"EUR"

请注意,国际货币符号和货币符号似乎取决于系统中设置的区域设置。但您可以轻松更改格式化程序的语言环境,如下所示:

numberFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"];

最好设置currencySymbol。然后,当语言环境是泰国(@"th_TH")时,你得到

numberFormatter.internationalCurrencySymbol   "THB"
numberFormatter.currencySymbol                "฿"
numberFormatter.currencyCode                  "THB"