使用 NSLocale、NSLocaleCountryCode 检查大洲的简便方法?

Easy way to check for continents using NSLocale, NSLocaleCountryCode?

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

我正在开发一款适用于英国和美国的应用程序。我想扩展该逻辑,因此如果用户的语言环境设置为欧洲的某个国家/地区,那么我将默认为我为英国所做的。如果它在欧洲、英国之外,那么我默认为我为美国所做的。

这就是我现在所做的。

NSString *countryCode = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];
if ([countryCode isEqualToString:@"UK"]) {
    NSString *startString = @"£ ";
}
if ([countryCode isEqualToString:@"US"]) {
    NSString *startString = @"$ ";
}

有没有简单的方法来检查大洲?

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

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

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

另一个 选项

使用 iOSCowboy 可以使用国家代码(ISO 3166 格式)到 return 大陆。

多一个选项

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

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

有关时区的完整列表,您可以从 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 ""
        }
    }
}