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

问题描述:

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

例如,在区域设置的任何点使用“USD”而不是“en_US”?

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

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

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

+0

请注意'USD'用于多个地区。欧元用于许多地区。更好地解释你有什么和你想要完成什么。 – rmaddy 2014-10-27 17:19:09

+0

因此,我列出了每个国家的货币代码(美元,英镑,日元,人民币等)。用户通过这些代码挑选他使用的任何货币,然后我希望NSNumberFormatter自动将其区域设置为该货币的区域设置以自动设置其格式。 – zavtra 2014-10-27 17:57:57

+0

这还不清楚。您是否有国家及其相关货币代码的列表,或者您是否只有货币代码列表?就像我说的,像欧元这样的代码被许多不同的国家使用。没有与特定货币代码绑定的特定区域设置。应根据用户的区域设置货币格式,而不是任何特定的货币代码。 – rmaddy 2014-10-27 18:01:35

您无法通过货币代码确定特定区域设置。

例如,其中有货币代码USD是27区域设置NSNumberFormatter与格式化字符串与7度的变化,这些NSLocale发出的数量,以及:

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

谢谢,我想我不得不这样做。 我可能会设置一个if语句,这样如果用户选择了27个中的任何一个,它就是“en_US”。 但是,我仍然想做货币转换,所以我仍然需要为每种货币编写if语句。无论如何,再次感谢! – zavtra 2014-10-28 12:38:20

+0

嘿rintaro,只是想知道,你从哪里得到的信息表明,与货币代码USD相关的区域设置的数量是27? – zavtra 2015-03-18 22:09:40

+2

刚算:)。 '(NSLocale.availableLocaleIdentifiers()as [String])。filter({NSLocale(localeIdentifier:$ 0).objectForKey(NSLocaleCurrencyCode)as?String ==“USD”})。count' – rintaro 2015-03-19 03:24:43