【问题标题】:How to rename the currency code to the full name of the currency? Swift如何将货币代码重命名为货币全名?迅速
【发布时间】:2019-07-12 07:30:04
【问题描述】:

我创建了这个方法。我有一组货币代码。但是当我插入一个代码时,例如:“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

【问题讨论】:

  • 顺便说一句 - 不要使用 NSLocale。使用Locale
  • 您为什么要尝试从货币代码创建区域设置?货币代码并不特定于某个地区。使用用户当前的语言环境。
  • @rmaddy 我收到带有货币代码数组的 API 数据,我需要将其更改为货币的全名。是怎么做到的?

标签: swift string nslocale


【解决方案1】:

您的主要问题是您尝试从货币代码创建区域设置,然后尝试使用该无效区域设置将货币代码转换为名称。只需使用用户当前的语言环境来转换货币代码。

您还应该使用Locale 而不是NSLocale

func getCurrencyFullName(code: String) -> String? {
    return Locale.current.localizedString(forCurrencyCode: code)
}

在英语语言环境中,这为 UAH 提供“乌克兰格里夫纳”。在乌克兰语环境中,这会给出“українська гривня”。

【讨论】:

    【解决方案2】:

    使用 Locale 代替 NSLocale

      func getCurrencyFullName(code: String) -> String? {
            let locale1 = Locale(identifier: code)
            return locale1.localizedString(forCurrencyCode: code)
        }
    

    对你有帮助。

    【讨论】:

      猜你喜欢
      • 2014-12-31
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      相关资源
      最近更新 更多