2014-12-15 3 views
1

Я видел, как это отвечало в объективе-C, но я не знаю, как преобразовать в быстрый.NSLocale to Country name

Мое приложение получает общедоступную информацию пользователя от Facebook, и мне нужно преобразовать локаль в название страны.

FBRequestConnection.startForMeWithCompletionHandler({ 
      connection, result, error in  
      user["locale"] = result["locale"] 
      user["email"] = result["email"] 
      user.save() 

      println(result.locale) 


     }) 

Например, для французского пользователя код отправляет «Необязательный (fr_FR)» в журнал. Однако мне нужно просто отправить название страны. Согласно localeplanet.com, отображаемым именем «fr_FR» является «French (France)». Поэтому в журнале все, что я хочу, это «Франция».

ответ

8

Отключение this SO question, я взломал перевод Swift. Попробуйте это:

let locale: NSLocale = NSLocale(localeIdentifier: result.locale!) 
let countryCode = locale.objectForKey(NSLocaleCountryCode) as String 
var country: String? = locale.displayNameForKey(NSLocaleCountryCode, value: countryCode) 

// According to the docs, "Not all locale property keys 
// have values with display name values" (thus why the 
// "country" variable's an optional). But if this one 
// does have a display name value, you can print it like so. 
if let foundCounty = country { 
    print(foundCounty) 
} 

Используйте что для Swift 3

let localIdentifier = Locale.current.identifier //returns identifier of your telephones country/region settings 

let locale = NSLocale(localeIdentifier: localIdentifier) 
//if u want a special identifier use that 
//let locale = NSLocale(localeIdentifier: "en_US") 
if let countryCode = locale.object(forKey: .countryCode) as? String { 

if let country:String = locale.displayName(forKey: .countryCode, value: countryCode) { 
print(country) 
} 
}