在我的模型中,我将价格存储为Double
值。
struct Item {
var price: Double // eg. 3.543
var currencyCode: String // eg. "USD"
}
我想使用用户的Locale
正确显示它们。我找到了使用NumberFormatter
的解决方案:
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencyCode = item.currencyCode
formatter.string(from: NSNumber(value: item.price))
按预期,它会根据用户的区域设置给出不同的结果。
如果我将formatter.currencyCode
设置为USD
:
如果我将formatter.currencyCode
设置为DKK
:
问题是,在使用更多外来货币(例如DKK-丹麦克朗)的情况下,格式化程序使用currencyCode代替currencySymbol。我觉得用符号代替代码更有意义。
理想情况是,我希望将formatter.currencyCode
设置为DKK
:
我该如何实现?还是应该坚持[C0]的设置方式而不要触摸它?
注意:我不能仅将Locale.current
用于数字,然后手动添加货币符号,因为可以将符号分配给不同的货币:NumberFormatter
是$3.543
中的美元价格,但在en_US Locale
中]这是CAD价格。
如何编写从fr_CA Locale
中获取currencySymbol
的函数?
currencyCode
“可以将符号分配给不同的货币”-我不认为这应该是问题