使用 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 ""
}
}
}
有没有办法检查用户当前所在的国家/地区是在欧洲、亚洲还是非洲?
我正在开发一款适用于英国和美国的应用程序。我想扩展该逻辑,因此如果用户的语言环境设置为欧洲的某个国家/地区,那么我将默认为我为英国所做的。如果它在欧洲、英国之外,那么我默认为我为美国所做的。
这就是我现在所做的。
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 ""
}
}
}