Найти текущую страну с устройства iPhone - PullRequest
49 голосов
/ 15 октября 2010

Мне нужно узнать текущую страну в настройках iPhone.Может кто-нибудь сказать мне, как получить текущую страну в приложении iPhone.

Я должен использовать текущую страну для парсинга RSS-канала, в котором мне нужно передать текущую страну.

Пожалуйста, помогите мне найти страну.

Заранее спасибо.

Ответы [ 9 ]

134 голосов
/ 15 октября 2010

Чтобы найти страну для выбранного пользователем языка:

NSLocale *currentLocale = [NSLocale currentLocale];  // get the current locale.
NSString *countryCode = [currentLocale objectForKey:NSLocaleCountryCode];
// get country code, e.g. ES (Spain), FR (France), etc.

В Swift:

let currentLocale = NSLocale.currentLocale()
let countryCode = currentLocale.objectForKey(NSLocaleCountryCode) as? String

Если вы хотите найти код страны текущего часового пояса, см. @ chings228's answer .

Если вы хотите найти код страны физического местоположения устройства, вам потребуется CoreLocation с обратным геокодированием.Подробности смотрите в этом вопросе: Как узнать текущее местоположение от пользователя в iOS

17 голосов
/ 19 мая 2012
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
NSString *country = [locale displayNameForKey: NSLocaleCountryCode value: countryCode];
9 голосов
/ 18 августа 2018

Для Swift 4.0,

Вы можете просто использовать

let countryCode = Locale.current.regionCode

print(countryCode)

9 голосов
/ 06 апреля 2017

Для устройств с SIM-картой вы можете использовать это:

  CTTelephonyNetworkInfo * network_Info = [CTTelephonyNetworkInfo new];
  CTCarrier * carrier = network_Info.subscriberCellularProvider;
  NSString  * countryCode = [carrier.isoCountryCode uppercaseString];
9 голосов
/ 17 марта 2015
NSLocale *countryLocale = [NSLocale currentLocale];  
NSString *countryCode = [countryLocale objectForKey:NSLocaleCountryCode];
NSString *country = [countryLocale displayNameForKey:NSLocaleCountryCode value:countryCode];
NSLog(@"Country Code:%@ Name:%@", countryCode, country);
//Country Code:IN Name:India

Ссылка на источник .

5 голосов
/ 12 декабря 2015

Если вы тестируете и хотите использовать другой язык из вашей системы, проще всего изменить параметры вашей схемы Application Language и Application Region, а не менять язык и регион на своем устройстве или симуляторе.

Перейдите на Product -> Scheme -> Edit Scheme... -> Run -> Options и выберите Application Language и Application Region, которые вы хотите проверить.

Edit Application Language and Application Region within Scheme Run Options

Из документации iOS: Тестирование вашего интернационализированного приложения

5 голосов
/ 02 декабря 2011
NSTimeZone *gmt = [NSTimeZone localTimeZone];

NSLog(@"timezone gmt %@",gmt.abbreviation);
3 голосов
/ 07 июля 2017

Последний рабочий код Swift 3.0 -

if let countryCode = (Locale.current as NSLocale).object(forKey: .countryCode) as? String {
    print(countryCode)
}
3 голосов
/ 19 октября 2016

Swift 3.0 решение

if let countryCode = (Locale.current as NSLocale).object(forKey: .countryCode) as? String {
            print(countryCode)
        }
...