如何通过两位ISO国家代码获取区域标识符或本地货币代码?
解决方案
1. 动态生成对应国家的Locale标识符
iOS 16+ 极简实现
iOS 16及以上版本,Locale支持直接通过区域代码初始化,自动匹配该区域的常用语言(比如GB对应en_GB,CN对应zh_CN),不用手动拼接标识符:
let isoCountryCode = "GB" // 替换为你的动态国家代码变量 if let locale = Locale(regionCode: isoCountryCode) { let currencyCode = locale.currency?.identifier ?? "GBP" // 按需调整兜底值 // 使用currencyCode }
兼容iOS 16以下版本
如果要支持更低系统版本,可以遍历系统可用Locale,筛选匹配目标国家代码的项:
let isoCountryCode = "GB" var targetLocale: Locale? for identifier in Locale.availableIdentifiers { let locale = Locale(identifier: identifier) if locale.regionCode == isoCountryCode { targetLocale = locale break // 取第一个匹配项,通常是该区域最常用的Locale } } let currencyCode = targetLocale?.currency?.identifier ?? "GBP"
2. 更简便的货币代码获取方式
如果你的需求是自动获取用户当前设备所在国家的货币,直接用系统当前Locale即可,无需手动传入国家代码:
let currencyCode = Locale.current.currency?.identifier ?? "USD" // 兜底值按需设置
这是最省心的实现,完全贴合“根据用户所在国家显示货币”的需求。
如果必须基于给定的ISO国家代码获取,那前面通过Locale(regionCode:)(iOS16+)的写法就是最简便的,无需额外拼接标识符。
内容的提问来源于stack exchange,提问作者Daniel C
相关产品推荐
相关产品推荐

