我正在使用NSLocale来检测我的用户现在所在的国家。当我想要检查用户是否在美国境内时
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
if ([countryCode isEqualToString:@"US"]) {
///////
}这是检查的正确方式吗?
发布于 2011-11-27 19:33:43
NSLocale只指示用户的语言和文化偏好,而不是他们的位置。如果您想知道用户的物理位置,则应该使用Core Location API。
发布于 2011-11-27 19:38:08
这是一个“是”和“不是”的答案。
是的,这将为您提供用户当前首选的语言环境。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: (为您链接了文档)。
https://stackoverflow.com/questions/8285170
复制相似问题