let locale: NSLocale = NSLocale.current as NSLocale
let country: String? = locale.countryCode
print(country ?? "no country")
// > Prints "IE" or some other country code
let swiftLocale: Locale = Locale.current
let swiftCountry: String? = swiftLocale.countryCode
// > Error "countryCode' is unavailable: use regionCode instead"
/// Returns the region code of the locale, or nil if it has none.
///
/// For example, for the locale "zh-Hant-HK", returns "HK".
public var regionCode: String? {
// n.b. this is called countryCode in ObjC
if let result = _wrapped.object(forKey: .countryCode) as? String {
if result.isEmpty {
return nil
} else {
return result
}
} else {
return nil
}
}
7条答案
按热度按时间ngynwnxp1#
可以在Locale结构上使用regionCode属性。
它没有被记录为旧的NSLocaleCountryCode构造的替代品,但看起来它是。下面的代码检查所有已知区域设置的countryCode,并将它们与regionCode进行比较。它们是相同的。
oyjwcjzk2#
与NSLocale Swift 3类似,您必须将覆盖类型
Locale
转换回其Foundation对应类型NSLocale
,以便检索国家代码:3pvhb19x3#
如果你确保你使用的是
NSLocale
而不是Locale
示例,你可以使用countryCode
属性:如果你尝试在Swift
Locale
中使用countryCode
,Xcode会给予你一个错误,建议你使用regionCode
:qfe3c7zg4#
NSLocale.countryCode
与Locale.regionCode
相同这是苹果的
Locale
实现。Locale.swiftlskq00tm5#
eufgjt7s6#
iOS 16 *
iOS 16以下
示例:
prdp8dxp7#