【问题标题】:iOS: Convert ISO Alpha 2 to Alpha 3 country codeiOS:将 ISO Alpha 2 转换为 Alpha 3 国家代码
【发布时间】:2012-07-20 09:49:43
【问题描述】:

是否可以在 iOS 中将 ISO 3166 alpha-2 国家代码转换为 alpha 3 国家代码,例如 DE 转换为 DEU?

【问题讨论】:

    标签: ios country-codes


    【解决方案1】:

    根据 Franck 的答案,这里是代码 swift4,用于加载 plist,然后转换 3 个字母 Country ISO 代码

    plist:Full conversion ISO 3166-1-Alpha2 to Alpha3

    //
    //  CountryUtility.swift
    //
    
    import Foundation
    
    struct CountryUtility {
    
    
        static private func loadCountryListISO() -> Dictionary<String, String>? {
    
            let pListFileURL = Bundle.main.url(forResource: "iso3166_2_to_iso3166_3", withExtension: "plist", subdirectory: "")
            if let pListPath = pListFileURL?.path,
                let pListData = FileManager.default.contents(atPath: pListPath) {
                do {
                    let pListObject = try PropertyListSerialization.propertyList(from: pListData, options:PropertyListSerialization.ReadOptions(), format:nil)
    
                    guard let pListDict = pListObject as? Dictionary<String, String> else {
                        return nil
                    }
    
                    return pListDict
                } catch {
                    print("Error reading regions plist file: \(error)")
                    return nil
                }
            }
            return nil
        }
    
    
        /// Convertion ISO 3166-1-Alpha2 to Alpha3
        /// Country code of 2 letters to 3 letters code
        /// E.g: PT to PRT
        static func getCountryCodeAlpha3(countryCodeAlpha2: String) -> String? {
    
            guard let countryList = CountryUtility.loadCountryListISO() else {
                return nil
            }
    
            if let countryCodeAlpha3 = countryList[countryCodeAlpha2]{
                return countryCodeAlpha3
            }
            return nil
        }
    
    
        static func getLocalCountryCode() -> String?{
    
            guard let countryCode = NSLocale.current.regionCode else { return nil }
            return countryCode
        }
    
    
        /// This function will get full country name based on the phone Locale
        /// E.g. Portugal
        static func getLocalCountry() -> String?{
    
            let countryLocale = NSLocale.current
            guard let countryCode = countryLocale.regionCode else { return nil }
            let country = (countryLocale as NSLocale).displayName(forKey: NSLocale.Key.countryCode, value: countryCode)
            return country
        }
    
    }
    

    要使用你只需要:

    if let countryCode = CountryUtility.getLocalCountryCode() {
    
                if let alpha3 = CountryUtility.getCountryCodeAlpha3(countryCodeAlpha2: countryCode){
                    print(alpha3) ///result: PRT
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      相关资源
      最近更新 更多