国家选择器 swift 4
country picker swift 4
我想在 swift 4 中实现原生 iOS 国家/地区选择器。
目前我有一个 table,其中包含国家代码:
var countriesCodes = NSLocale.isoCountryCodes as [String]
我实现了委托,但数据源有问题。
如何转换国家名称中的每个国家代码?
您可以使用 Foundation (documentation here) 中提供的以下函数将每个国家/地区代码键转换为其本地化显示名称:
Locale.current.localizedString(forRegionCode:)
// "NZ" -> "New Zealand"
您可以使用 flatMap
:
将您的国家/地区代码数组转换为显示名称
let countryNames = countriesCodes.flatMap(
Locale.current.localizedString(forRegionCode:))
尽管您可能希望将 ISO 国家代码及其本地化显示名称组成一个元组对,这样会更有用:
let countryCodesAndNames = countriesCodes.flatMap { code in
Locale.current.localizedString(forRegionCode: code).map { (code, [=12=]) }
}
// countryCodesAndNames is type [(String, String)]
// which is (ISO code, displayName)
// eg.
print(countryCodesAndNames[0])
// prints ("AC", "Ascension Island")
我想在 swift 4 中实现原生 iOS 国家/地区选择器。 目前我有一个 table,其中包含国家代码:
var countriesCodes = NSLocale.isoCountryCodes as [String]
我实现了委托,但数据源有问题。 如何转换国家名称中的每个国家代码?
您可以使用 Foundation (documentation here) 中提供的以下函数将每个国家/地区代码键转换为其本地化显示名称:
Locale.current.localizedString(forRegionCode:)
// "NZ" -> "New Zealand"
您可以使用 flatMap
:
let countryNames = countriesCodes.flatMap(
Locale.current.localizedString(forRegionCode:))
尽管您可能希望将 ISO 国家代码及其本地化显示名称组成一个元组对,这样会更有用:
let countryCodesAndNames = countriesCodes.flatMap { code in
Locale.current.localizedString(forRegionCode: code).map { (code, [=12=]) }
}
// countryCodesAndNames is type [(String, String)]
// which is (ISO code, displayName)
// eg.
print(countryCodesAndNames[0])
// prints ("AC", "Ascension Island")