有没有办法通过货币代码而不是iOS中的区域设置标识符为NSLocale
设置NSNumberFormatter
?
例如,使用" USD"而不是" en_US"在语言环境设置的任何一点?
我看到有一个NSLocaleCurrencyCode对象,但我不确定我可以使用哪种方法来设置NSNumberFormatter's
locale
。
我目前正在使用Swift,如果这样可以让这个过程变得更容易。
编辑:为了进一步说明我正在做什么,我列出了每个国家/地区的货币代码(美元,英镑,日元,人民币等)。 )。用户通过这些代码选择他使用的任何货币,然后我希望NSNumberFormatter自动将其区域设置设置为该货币的区域设置以自动格式化。
答案 0 :(得分:3)
您无法通过货币代码确定特定区域设置。
例如,货币代码USD
的区域设置数为27,NSNumberFormatter
这些NSLocale
的区域设置会发出带有7种变体的格式化字符串:
"$123,456.78": [en_PR, es_US, en_MH, chr_US, en_AS, en_MP, es_SV, en_VG, en_VI, es_PR, haw_US, en_IO, en_UM, en_US, en_DG, en_GU]
"US$123,456.78": [en_PW, sn_ZW, en_ZW, en_TC, nd_ZW, en_FM]
"$123.456,78": [es_EC]
"123 456,78 US$": [pt_TL]
"$ 123456.78": [en_US_POSIX]
"$ 123.456,78": [nl_BQ]
"$ 123,456.78": [lkt_US]
如果你想做你想做的事,你应该自己维护一个查找表。
let currency2locale = [
"USD": NSLocale(localeIdentifier: "en_US"),
"GBP": NSLocale(localeIdentifier: "en_GB"),
"JPY": NSLocale(localeIdentifier: "ja_JP"),
...
]