使用NSLocale,NSLocaleCountryCode检查大陆的简便方法?

时间:2016-01-02 01:57:04

标签: ios objective-c nslocale

有没有办法检查用户当前的国家/地区是在欧洲,亚洲还是非洲?

我正致力于为英国和美国做出不同的应用程序。我想扩展这个逻辑,所以如果用户的语言环境设置为欧洲的国家,那么我默认我为英国做的事情。如果它在欧洲,英国之外,那么我默认为我为美国所做的事情。

这就是我现在所做的。

{{1}}

有没有一种简单的方法来检查大陆?

2 个答案:

答案 0 :(得分:4)

你可以这样得到大陆的名字......

 NSTimeZone *timeZone = [NSTimeZone localTimeZone];
 NSString *tzName = [timeZone name];

现在,您可以使用名称(switch语句)处理所需内容。例如在芝加哥,它显示:America/Chicago

另一个 选项

使用iOSCowboy您可以使用国家/地区代码(ISO 3166格式)返回该大陆。

还有一个选项

您可以创建一个包含国家及其大陆的数组......

答案 1 :(得分:0)

您可以解析时区以确定当前大陆的粗略近似值。

有关时区的完整列表,您可以从 macOS 运行 sudo systemsetup -listtimezones

public extension TimeZone {
    var globeEmoji: String {
        let region = self.identifier.split(separator: "/").first ?? ""
        switch region {
        case "Atlantic",
             "Africa",
             "Europe",
             "GMT":
            return "?"
        case "Arctic",
             "Asia",
             "Australia",
             "Indian":
            return "?"
        case "America",
             "Antarctica",
             "Pacific":
            return "?"
        case "Brazil",
             "CET",
             "CST6CDT",
             "Canada",
             "Chile",
             "Cuba",
             "EET",
             "EST",
             "EST5EDT",
             "Egypt",
             "Eire",
             "Etc",
             "Factory",
             "GB",
             "GB-Eire",
             "GMT+0",
             "GMT-0",
             "GMT0",
             "Greenwich",
             "HST",
             "Hongkong",
             "Iceland",
             "Iran",
             "Israel",
             "Jamaica",
             "Japan",
             "Kwajalein",
             "Libya",
             "MET",
             "MST",
             "MST7MDT",
             "Mexico",
             "Midseast",
             "NZ",
             "NZ-CHAT",
             "Navajo",
             "PRC",
             "PST8PDT",
             "Poland",
             "Portugal",
             "ROC",
             "ROK",
             "Singapore",
             "Turkey",
             "UCT",
             "US",
             "UTC",
             "Universal",
             "U-SU",
             "WET",
             "Zulu":
            print("An unusual time zone was detected. These are not usually used.")
            return "?"
        default:
            print("Failed to handle time zone: \(self.identifier)")
            return "?"
        }
    }
}