2014-07-14 221 views
8

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

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

我的目标是,以显示不同颜色的货币符号,所以我用NSAttributedString,试图找到符号范围,并设置不同的属性了。问题是,格式化返回错误的符号,当我initilizing的属性串:

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

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

,但在显示屏幕上的标签,我看到正确的欧元符号:

有谁知道怎样才能得到给定货币代码的货币符号?

回答

8

我刚刚测试了你的代码。如果您定义数字格式,你做的方式后立即运行日志报表输出

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

注意,国际货币符号和货币符号似乎取决于你的系统中设置的语言环境。但是你可以很容易地改变区域设置这样的格式:

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

它很可能是最好设置currencySymbol可言。然后,当区域设置是泰国时(@"th_TH"),您将获得

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

您当前的语言环境是什么? –

+0

我明白了,所以如果你在en_US,它不起作用 –

+0

错了。您可以按照上面的说明设置格式化器的区域设置。 – Mundi