Сборщик страны 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")
Другие вопросы по тегам