仅根据ISO4217货币代码正确格式化货币值?

时间:2013-12-30 23:27:19

标签: ios currency iso nsnumberformatter

我正在使用返回如下值的网络API:

{
    "CNY": 42.0,
    "DKK": 31337.00,
    "EUR": 6789.01,
    "GBP": 6502.00,
    "USD": 12345.67,
...
}

我想将这些值格式化为正确的货币值(例如美元,“12,345.67美元”,欧元,“6789.01”,英镑,“6502.00”,DKK,“31337.00 DKK”等)换句话说,使用正确的符号($,£等),但对于某些货币,符号在金额之前,而对于其他货币,它在金额之后,等等。

catch是我使用的API只返回ISO4217国家代码(“USD”,“EUR”,“CNY”等)而不是locales。我知道NSNumberFormatter有一个NSNumberFormatterCurrencyStyle看起来像是正确的格式化,但显然你可以告诉它你正在处理的货币类型的唯一方法是递交NSLocalesetLocale

有没有办法将ISO4217货币代码转换为区域设置,而不是在我的代码中对ISO4217->区域设置转换表进行硬编码(由于ISO4217->区域设置映射可能不会更改,因此可以正常使用经常??)仍然,如果可能的话,我更喜欢以编程方式执行此操作。

1 个答案:

答案 0 :(得分:0)

当然,您无法将货币代码映射到区域设置 - 使用欧元这只是必须失败,因为可能有50个区域设置使用欧元。

您需要做的是根据用户的区域设置显示货币。例如,德国,英国,美国的用户都可以显示欧元,并以不同的方式进行。每个区域设置都可以显示所有货币。