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

时间:2011-05-17 15:10:45

标签: ios iphone core-location cllocationmanager cllocation

我想获取当前位置,但我收到错误。

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

- (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.)" 

19 个答案:

答案 0 :(得分:129)

如果您使用的是模拟器:

  1. 按Xcode中的command + shift + ,打开方案编辑器
  2. 选择“运行方案”
  3. 转到“选项”标签
  4. 检查✅Allow Location Simulation
  5. 在下拉列表中选择默认位置
  6. 选择None作为默认位置可能会导致问题。

答案 1 :(得分:102)

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

    ...如果你这样做,那么:

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

  3. 重置您的网络设置
  4. 这应该解决这个问题。它与设备/网络相关而非应用相关。这很烦人,特别是如果你的应用程序依赖于位置服务而且设备只是WiFi而且人们在AppStore上给予负面评价......对不起,我在那里有点情绪化。

答案 2 :(得分:21)

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

位置管理员的文档说这个错误是暂时的。它让你知道它无法立即检索一个位置,但它继续尝试。 &#34;在这种情况下,您可以简单地忽略错误并等待新事件。&#34;使用名为locationManager:didFailWithError:的方法是一种非常愚蠢的方法 - 感谢Apple!

Apple Documentation

答案 3 :(得分:18)

尝试重新启动模拟器(假设您正在使用它)。

尝试了其他一切后,这对我有用。

答案 4 :(得分:14)

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

  

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

答案 5 :(得分:9)

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

enter image description here

答案 6 :(得分:7)

我有同样的问题。我相信可能的解释/修复已涵盖in this SO post

答案 7 :(得分:5)

更改模拟器上的“位置”对我有用。

  

调试&gt;位置&gt; (我被检查无,而不是城市自行车骑   e.g。)

答案 8 :(得分:5)

  
      
  1. 在模拟器中,转到设置&gt;一般&gt;重置&gt;重置位置&amp;隐私

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

  4.   

答案 9 :(得分:3)

假设您正在使用模拟器,您可以Debug -> Location并设置位置。

如果您没有选择,则会出现此错误。

答案 10 :(得分:2)

如果你使用的是custom location,请确保你有正确的方式,并且在我意识到之前3小时就将它反转并浪费了......

答案 11 :(得分:2)

之前我已经看到了问题,有办法解决它,但它只能工作一次。如果你想再次运行项目,你需要每次重复解决方案。

  

1.在Xcode中,产品 - &gt;方案 - &gt;编辑方案,然后取消&#34;允许位置模拟器&#34;。

     

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

     

3.再与Xcode重复,重复第一步。

     

4.到iOS模拟器并重置。然后它会工作。

答案 12 :(得分:1)

可以通过将位置设置为“Apple”来解决此类问题。至少它可以用于测试目的。

答案 13 :(得分:1)

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

来自@Mem和其他许多人的答案谢谢

答案 14 :(得分:1)

对于返回的开发人员:)只需从模拟器菜单中选择“Debug->Location->Freeway Drive”即可。如果仍有问题,请在模拟器菜单中执行“模拟器 - >重置内容和设置”后尝试。这对我有同样的问题帮了我一次。某些时间模拟器位置设置为“Custom location”,因为它没有检测到任何内容。

答案 15 :(得分:1)

如果您正在使用模拟器,请确保方案允许位置,并且您选择了默认位置。

enter image description here

答案 16 :(得分:0)

尝试使用设备。有时模拟器无法占据您的位置。

答案 17 :(得分:0)

在模拟器中回家

主页 - &gt;设置 - &gt;隐私权 - &gt;地点 - &gt;选择应用并始终选择

答案 18 :(得分:0)

在添加权限时隐私-使用中的位置info.plist中的使用情况说明已为我解决