我有货币代码(例如:“ UAH”)。在我的代码中,我得到的货币符号等于货币代码(“ UAH”),但对于“ USD”和“ EUR”-“ $”和“€”。为什么?
let currencyCode = "UAH"
let localeComponents = [NSLocaleCurrencyCode: currencyCode]
let localeIdentifier = NSLocale.localeIdentifierFromComponents(localeComponents)
let locale = NSLocale(localeIdentifier: localeIdentifier)
let currencySymbol = locale.objectForKey(NSLocaleCurrencySymbol)
我找到了解决方案:
let locales: NSArray = NSLocale.availableLocaleIdentifiers()
for localeID in locales as! [NSString] {
let locale = NSLocale(localeIdentifier: localeID as String)
let code = locale.objectForKey(NSLocaleCurrencyCode) as? String
if code == "UAH" {
let symbol = locale.objectForKey(NSLocaleCurrencySymbol) as? String
print(symbol!)
break
}
}
因为您的locale
设置不正确。除货币代码外,系统对您的语言环境一无所知。有大约数十种语言环境USD
作为货币代码。它们的货币符号在US$
和之间变化$
。UAH
有2个可用的语言环境:ru_UA
和uk_UA
。
一种更安全的方法是遍历具有与指定货币代码相同的所有语言环境,然后使用规则从结果列表中进行选择:
let currencyCode = "UAH"
let currencySymbols = NSLocale
.availableLocaleIdentifiers()
.map { NSLocale(localeIdentifier: $0) }
.filter {
if let localeCurrencyCode = $0.objectForKey(NSLocaleCurrencyCode) as? String {
return localeCurrencyCode == currencyCode
} else {
return false
}
}
.map {
($0.localeIdentifier, $0.objectForKey(NSLocaleCurrencySymbol)!)
}
print(currencySymbols) // Now you can choose from the list
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句