NSLocale在美国?

时间:2011-11-27 11:20:07

标签: iphone objective-c ios nslocale

我正在使用NSLocale来检测我的用户现在所在的国家/地区。  当我想检查用户是否在美国境内时

NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];  

if ([countryCode isEqualToString:@"US"]) {
///////
}

这是检查的正确方法吗?

2 个答案:

答案 0 :(得分:5)

NSLocale仅表示用户的语言和文化偏好,而不是其位置。如果您想知道用户的物理位置,则应使用Core Location API。

答案 1 :(得分:2)

这是一个“是”和“否”的答案。

是的,这会为您提供用户当前的首选区域设置And judging from other questions like yours,其他人已经认定这个答案“足够好”。

但是,我可以使用我的iPhone在中国,如果我还在使用英语,我相信countryCode仍会返回“US”。

如果您真的想知道用户当前的国家/地区,可以使用CoreLocation并执行一些反向地理编码。使用CoreLocation坐标,您可以查找http://ws.geonames.org/findNearby?lat=47.3&lng=9之类的内容。还有MKReverseGeocoder(从iOS 5.0开始不推荐使用)和GLGeocoder,调用– reverseGeocodeLocation:completionHandler:(为您链接的文档)。