swift - 如何将货币代码重命名为货币全名?迅速
问题描述
我创建了这个方法。我有一组货币代码。但是当我插入一个代码时,例如:“USD”,该方法返回给我 Optional(“US Dollar”)。每当我尝试提取一个选项时,我都会得到零。我做错什么了?
func getCurrencyFullName(code: String) -> String? {
let locale = NSLocale(localeIdentifier: code)
print(locale.displayName(forKey: NSLocale.Key.countryCode, value: code) // Optional "US dollar"
return locale.displayName(forKey: NSLocale.Key.countryCode, value: code)
}
let dollar = getCurrencyFullName(code: UAH)
print(dollar) // nil
解决方案
您的主要问题是您尝试从货币代码创建区域设置,然后尝试使用该无效区域设置将货币代码转换为名称。只需使用用户当前的语言环境来转换货币代码。
您还应该使用Locale
而不是NSLocale
.
func getCurrencyFullName(code: String) -> String? {
return Locale.current.localizedString(forCurrencyCode: code)
}
在英语语言环境中,这为 UAH 提供“乌克兰格里夫纳”。在乌克兰语环境中,这会给出“українська гривня”。
推荐阅读
- bash - 提交后如何 gitignore 来自 git 存储库的所有单个文件扩展名文件?
- java - Java - 在主要方法和绘图方法之间传递变量时遇到问题
- vb.net - 带变量的节点
- python - Python 如何将 collections.OrderedDict 转换为 dataFrame
- bash - 是否可以使用 bash sript 将数字的二进制表示形式写入文件?
- javascript - 如何在 Javascript 中从 JSON 中检索叶子子节点?
- shell - shell脚本中的多个条件不起作用
- django - 使用 python 3.7 版在生产环境中启动 django
- r - 通过 for-if 循环评估多个条件来生成虚拟变量
- javascript - 根据可用空间在 div 旁边排列文本