从iPhone设备查找当前国家/地区

时间:2010-10-15 08:27:12

标签: ios objective-c iphone application-settings appsettings

我必须在iPhone设置中获取当前国家/地区。谁能告诉我如何在iPhone应用程序中获取当前国家/地区。

我必须使用当前国家/地区来解析我需要传递当前国家/地区的RSS Feed。

请帮我找到这个国家。

提前致谢。

9 个答案:

答案 0 :(得分:133)

要查找用户所选语言的国家/地区:

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

在斯威夫特:

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

如果您想查找当前时区的国家/地区代码,请参阅@chings228's answer

如果要查找设备物理位置的国家/地区代码,则需要使用反向地理编码的CoreLocation。有关详细信息,请参阅此问题:How can I get current location from user in iOS

答案 1 :(得分:17)

NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
NSString *country = [locale displayNameForKey: NSLocaleCountryCode value: countryCode];

答案 2 :(得分:9)

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

Source Link

答案 3 :(得分:9)

对于使用SIM卡的设备,您可以使用:

  CTTelephonyNetworkInfo * network_Info = [CTTelephonyNetworkInfo new];
  CTCarrier * carrier = network_Info.subscriberCellularProvider;
  NSString  * countryCode = [carrier.isoCountryCode uppercaseString];

答案 4 :(得分:9)

对于Swift 4.0,

您可以简单地使用

print(countryCode)

if(strpos($_SERVER['REQUEST_URI'], 'shop.php') !== false){ echo 'url contains shop'; }

答案 5 :(得分:5)

NSTimeZone *gmt = [NSTimeZone localTimeZone];

NSLog(@"timezone gmt %@",gmt.abbreviation);

答案 6 :(得分:5)

如果您正在测试并希望使用与系统不同的语言,则最简单的方法是更改​​方案的Application RegionProduct选项,而不是更改设备或模拟器上的语言和区域。

转到Scheme - > Edit Scheme... - > Run - > Options - > Application Language并选择Application RegionData dataHolder= null; lThread.run(); synchronized (lThread) { while(lThread.locked){ try { lThread.wait(3000); } catch(InterruptedException e){ } } dataHolder = lThread.dataHolder; } 你要测试。

Edit Application Language and Application Region within Scheme Run Options

来自iOS文档:Testing Your Internationalized App

答案 7 :(得分:3)

Swift 3.0 解决方案

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

答案 8 :(得分:3)

Swift 3.0最新的工作代码是

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