有没有办法检查用户当前的国家/地区是在欧洲,亚洲还是非洲?
我正致力于为英国和美国做出不同的应用程序。我想扩展这个逻辑,所以如果用户的语言环境设置为欧洲的国家,那么我默认我为英国做的事情。如果它在欧洲,英国之外,那么我默认为我为美国所做的事情。
这就是我现在所做的。
{{1}}
有没有一种简单的方法来检查大陆?
答案 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 "?"
}
}
}