Сборщик страны swift 4
Я хотел бы внедрить встроенную систему выбора страны iOS в swift 4. В настоящее время у меня есть таблица, которая содержит код страны:
var countriesCodes = NSLocale.isoCountryCodes as [String]
Я реализую делегат, и у меня есть проблема в источнике данных. Как преобразовать код каждой страны в название страны?
1 ответ
Решение
Вы можете преобразовать каждый ключ кода страны в его локализованное отображаемое имя, используя следующую функцию, предоставляемую в Foundation ( документация здесь):
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, $0) }
}
// countryCodesAndNames is type [(String, String)]
// which is (ISO code, displayName)
// eg.
print(countryCodesAndNames[0])
// prints ("AC", "Ascension Island")