didFailWithError:错误域= kCLErrorDomain代码= 0“无法完成该操作。(kCLErrorDomain错误0。)”


82

我想获取当前位置,但出现错误。

这是我的视图控制器的片段。

- (void)viewDidLoad {
    self.locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
    [locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager 
     didUpdateLocations:(NSArray<CLLocation *> *)locations {
    // I would get the latest location here
    // but this method never gets called
}
- (void)locationManager:(CLLocationManager *)manager 
       didFailWithError:(NSError *)error {
    NSLog(@"didFailWithError: %@", error);
}

我期望locationManager:didUpdateLocations:被调用的委托方法,但相反,只会locationManager:didFailWithError:被调用,并打印此:

didFailWithError: Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)" 

您可以使用Google API作为替代。在这里参考我的答案stackoverflow.com/a/40670608/2033377
Deepak Thakur

Answers:


106
  1. 检查您是否确实有有效的WiFi和3G连接

    ...如果您这样做,则:

  2. 转到设置并重置您的位置服务

  3. 重置您的网络设置

这应该解决该问题。它与设备/网络相关,与应用程序无关。尤其令人讨厌的是,如果您的应用程序依赖于定位服务,并且该设备仅支持WiFi,并且人们在AppStore上给出了负面评分……对不起,我在这里有点激动。


2
据我所知,GPS不需要互联网或wifi连接,它只是一个接收器,如果它位于具有2或3个GPS卫星的可访问位置,我们可以获取地理位置坐标。没有互联网或wifi连接?
Durai Amuthan.H 2013年

2
指出
重置

3
您不必执行这些步骤。只需忽略此错误,然后等待更多更新。请在下面查看我的答案,或在developer.apple.com/library/ios/documentation/corelocation/…上查看文档:
Ray Lillywhite 2014年

3
在我的设备(iPhone 5S,iOS 8.1.3)上使用MapKit和CoreLocation时,我遇到了完全相同的问题。我无法找到位置,并且一次又一次遇到相同的错误(尽管移动网络信号良好)。在我打开WiFi之前,一切都已修复!很奇怪...谢谢!
Vinzzz

2
@ DuraiAmuthan.H iPad没有实际的GPS硬件。他们使用wifi MAC地址数据库来确定您的位置。
whoknows'Oct

146

如果您使用模拟器:

  1. command + shift + ,Xcode打开方案编辑器
  2. 选择运行方案
  3. 转到选项标签
  4. 检查✅ Allow Location Simulation
  5. 在下拉菜单中选择一个默认位置

选择None作为默认位置可能会导致此问题。


4
哇!谢谢,我已经追了好几个星期了。我的应用一直强迫我的iPad或iPhone到达英国伦敦的位置,但我不知道为什么。我关闭了该选项,问题就消失了,也许是因为打bing抓住位置然后关闭然后将位置更改为Scheme上的位置。
安德鲁·史密斯

7
为我工作,但我也必须做iOS Simulator>Reset Content and Settings...
bentytree 2014年

为我钉了它。
ScottyBlades

23

只需忽略此错误,然后等待更多更新或其他错误。

位置管理器的文档说此错误是暂时的。通知您它无法立即检索位置,但仍会继续尝试。“在这种情况下,您可以简单地忽略该错误并等待新事件。” 这是使用名为“方法”的真正愚蠢的方法locationManager:didFailWithError:-谢谢苹果!

Apple Documentation


19

尝试重新启动模拟器(假设这就是您所使用的)。

在尝试了所有其他方法之后,这对我有用。


为我工作。谢谢
Sushil Sharma

也为我工作。谢谢
cozmin-calin

14

重新启动模拟器对我不起作用。

我必须通过清除所有内容"iOS Simulator" >> "Reset Content and Settings...


9

我在模拟器上收到此错误。单击调试面板中的位置按钮并设置位置对我来说解决了这个问题。(确保按钮为蓝色)

在此处输入图片说明




5
  1. 在模拟器中,转到设置>常规>重置>重置位置和隐私

  2. 退出模拟器并再次运行应用程序



2

如果您使用的是custom location确保您的经纬度正确的方法,那么在我意识到之前,我已将其反转并浪费了3个小时...


我在这里还浪费了2个小时,将纬度和经度设置在正确的位置。
Arpit B Parekh

2

我以前看到过这个问题,有一种解决方法,但是只能解决一次。如果要再次运行该项目,则需要每次重复该解决方案。

1.在Xcode,产品->方案->编辑方案中,然后取消“允许位置模拟器”。

2.转到iOS模拟器并重置“内容和设置”。

3.再次使用Xcode,重复第一步。

4.到iOS模拟器并重置。然后它将起作用。



1
  1. 我已经重置了内容和设置。
  2. 从派生数据中删除数据。
  3. 重新启动Xcode和Simulator并为我工作。

来自@Mem的回答以及其他许多感谢


1

对于返回的开发者:)只需Debug->Location->Freeway Drive从“模拟器”菜单中选择“ ”即可。如果仍然存在问题,请在模拟器菜单中执行“模拟器->重置内容和设置”后尝试。这曾经帮助我解决过同样的问题。某个时间模拟器的位置设置为“ Custom location”,因此它没有检测到任何东西。


1

如果您使用的是Simulator,请确保方案允许位置,并且您选择了默认位置。

在此处输入图片说明


0

尝试在设备中。有时模拟器无法带您到达您的位置。


0

在模拟器中回家

主页->设置->隐私->位置->选择应用程序并始终选择


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.