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

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

比如说,在地区设置的任何一点使用“USD”而不是“en_US”?

我看到有一个NSLocaleCurrencyCode对象,但我不知道我可以使用什么方法来设置NSNumberFormatter's locale

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

编辑:为了进一步解释我在做什么,我有一个每个国家的货币代码(美元,英镑,日元,人民币等…)的名单。 用户通过这些代码select他使用的任何货币,然后我希望NSNumberFormatter自动将其语言环境设置为该货币的区域设置以自动格式化。

您无法从货币代码中确定特定区域设置。

例如,具有货币代码USD的区域设置的数量是27,并且具有这些NSLocale NSNumberFormatter发出具有7个变体的格式化的string:

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