我NSLocale
用来检测我的用户现在在哪个国家。当我想检查用户是否在美国境内时
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
if ([countryCode isEqualToString:@"US"]) {
///////
}
检查方法是否正确?
我NSLocale
用来检测我的用户现在在哪个国家。当我想检查用户是否在美国境内时
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
if ([countryCode isEqualToString:@"US"]) {
///////
}
检查方法是否正确?
NSLocale
仅表示用户的语言和文化偏好,而不是他们的位置。如果你想知道用户的物理位置,你应该使用Core Location APIs。
这是一个“是”和“否”的答案。
是的,这为您提供了用户当前首选的 Locale。 从像你这样的其他问题来看,其他人认为这个答案“足够好”。
但是,我可以用我的 iPhone 在中国,如果我仍然使用英语,我相信 countryCode 仍然会返回“US”。
如果您真的想知道用户当前所在的国家/地区,您可以使用 CoreLocation 并进行一些反向地理编码。使用 CoreLocation 坐标,您可以进行类似http://ws.geonames.org/findNearby?lat=47.3&lng=9的查找。还有 MKReverseGeocoder(自 iOS 5.0 起已弃用)和 GLGeocoder 调用– reverseGeocodeLocation:completionHandler:
(为您链接的文档)。