CLGeocoder始终在设备上失败,但在模拟器中工作

时间:2012-09-04 14:35:23

标签: ios location reverse-geocoding

我正在使用CLGeocoder来反转地理编码设备的当前位置。它在模拟器上运行良好,但始终在设备(iPhone 4和iPad 3)上出现kCLErrorNetwork错误。

代码非常简单:

if ( geocoder == nil ) geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:self.location completionHandler:^(NSArray *placemarks, NSError *error) {

    if ( error == nil ) {

        // Do good stuff with the placemark...

    } else {

        NSLog(@"unable to reverse geocode location %@ due to error: %@", self.location, error);
    }
}];

打印的错误消息为:

unable to reverse geocode location <[redacted],[redacted]> +/- 69.94m (speed -1.00 mps / course -1.00) @ 9/4/12 10:30:19 AM Eastern Daylight Time due to error: Error Domain=kCLErrorDomain Code=2 "The operation couldn’t be completed. (kCLErrorDomain error 2.

只有在CLLocationManager提供了位置后才会调用此方法,因此该方法始终会传递给有效位置。

我在几个Wi-Fi网络和3G网络上尝试过它。它永远不会在设备上运行。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

这可能不是您的问题的问题,但我猜设备上的网络层崩溃并且意味着它没有连接到互联网。关闭并打开飞机模式为我解决了问题。