ios - 如何通过货币代码设置 iOS NSNumberFormatter 语言环境?

标签 ios objective-c swift

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

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

我看到有一个 NSLocaleCurrencyCode 对象,但我不确定我可以使用它的什么方法来设置 NSNumberFormatter 的 locale

我目前使用的是 Swift,如果它能让这个过程更容易的话。

编辑:为了进一步解释我在做什么,我有一个每个国家/地区的货币代码列表(美元、英镑、日元、人民币等...)。用户通过这些代码选择他正在使用的货币,然后我希望 NSNumberFormatter 自动将其语言环境设置为该货币的语言环境以自动格式化它。

最佳答案

您无法根据货币代码确定特定区域设置。

例如,具有货币代码 USD 的语言环境的数量是 27,并且带有这些 NSLocaleNSNumberFormatter 发出具有 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"),
    ...
]

关于ios - 如何通过货币代码设置 iOS NSNumberFormatter 语言环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26593017/

相关文章:

ios - MFMailComposeViewController 不发送电子邮件或调用委托(delegate) (MFMailComposeViewControllerDelegate)

ios - 在左上角创建自定义圆角矩形按钮角?

ios - NSInternalInconsistencyException : There can only be one UIApplication instance

ios - 如何让UISlider在第一次显示的时候变粗?

ios - 以编程方式在表行点击上推送 VC

ios - 首次登录应用后自动填充iOS12提示信息用户保存密码?

ios - CoreFoundation 陷阱错误 "Thread1:EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xdefe)"

ios - 当 UIWebView 反弹时重新加载页面

ios - iPad 导航 Controller 工具栏位置

ios - Quick and Nimble 测试