2

NSLocale用来检测我的用户现在在哪个国家。当我想检查用户是否在美国境内时

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

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

检查方法是否正确?

4

2 回答 2

5

NSLocale仅表示用户的语言和文化偏好,而不是他们的位置。如果你想知道用户的物理位置,你应该使用Core Location APIs。

于 2011-11-27T11:33:43.160 回答
2

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

是的,这为您提供了用户当前首选的 Locale从像你这样的其他问题来看,其他人认为这个答案“足够好”。

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

如果您真的想知道用户当前所在的国家/地区,您可以使用 CoreLocation 并进行一些反向地理编码。使用 CoreLocation 坐标,您可以进行类似http://ws.geonames.org/findNearby?lat=47.3&lng=9的查找。还有 MKReverseGeocoder(自 iOS 5.0 起已弃用)和 GLGeocoder 调用– reverseGeocodeLocation:completionHandler:(为您链接的文档)。

于 2011-11-27T11:38:08.333 回答