如何通过货币代码设置iOS NSNumberFormatter区域设置?

时间:2014-10-27 17:13:38

标签: ios objective-c swift

有没有办法通过货币代码而不是iOS中的区域设置标识符为NSLocale设置NSNumberFormatter

例如,使用" USD"而不是" en_US"在语言环境设置的任何一点?

我看到有一个NSLocaleCurrencyCode对象,但我不确定我可以使用哪种方法来设置NSNumberFormatter's locale

我目前正在使用Swift,如果这样可以让这个过程变得更容易。

编辑:为了进一步说明我正在做什么,我列出了每个国家/地区的货币代码(美元,英镑,日元,人民币等)。 )。用户通过这些代码选择他使用的任何货币,然后我希望NSNumberFormatter自动将其区域设置设置为该货币的区域设置以自动格式化。

1 个答案:

答案 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"),
    ...
]