ios - NSNumberFormatter currencySymbol 错误

标签 ios currency nsnumberformatter

我在获取 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];

要获取本地化名称('US Dollar'、'Japanese Yen', ..),您可以使用 NSLocaleCurrencyCode:

   NSLocale* locale = [NSLocale currentLocale];
   NSString* cc = [locale displayNameForKey:NSLocaleCurrencyCode
                              value:currencyCode];

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

关于ios - NSNumberFormatter currencySymbol 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8894066/

相关文章:

iphone - 如何在 PDF 中输出欧元符号

基于面额的特定价格的算法可能(多)支付的金额

ios - 在 UITextField 输入 4 个整数后添加空格时崩溃

ios - 不能在动画 block 中更改隐藏属性

ios - xcode 4.6 中的 "Receiver type for instance messages is a forward declaration"

c# - .NET 中的货币格式

ios - NumberFormatter 字符串(来自 :NSNumber) method has issues with decimal places

macos - 在 NSNumberFormatter 子类中调用 NSBeep

ios - 将 NSString 转换为 NSIndexPath

ios - 什么是EXC_BAD_ACCESS,为什么catch就抓不到?