【问题标题】:didFailWithError: Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"didFailWithError: Error Domain=kCLErrorDomain Code=0 "操作无法完成。(kCLErrorDomain error 0.)"
【发布时间】:2011-08-27 08:09:45
【问题描述】:

我想获取当前位置,但我得到了一个错误。

这是我的视图控制器的 sn-p。

- (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
  • goto 模拟器 -> 功能 -> 位置 -> Apple。如果您将其设置为none,它将无法正常工作并抛出此错误。我是意外这样做的

标签: ios iphone core-location cllocationmanager cllocation


【解决方案1】:

如果您使用的是模拟器:

  1. 在 Xcode 中按command + shift + , 打开方案编辑器
  2. 选择运行方案
  3. 转到“选项”选项卡
  4. 检查✅Allow Location Simulation
  5. 在下拉列表中选择默认位置

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

【讨论】:

  • 哇!谢谢,我已经追了几个星期了。我的应用程序不断将我的 iPad 或 iPhone 强制到英国伦敦的位置,我不知道为什么。我关闭了该选项,问题就消失了。也许它在抓取位置时遇到了问题,然后关闭并将位置更改为方案中的位置。
  • 为我工作,但我也必须这样做iOS Simulator > Reset Content and Settings...
  • 帮我搞定了。
【解决方案2】:
  1. 检查您是否确实拥有有效的 WiFi 和 3G 连接

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

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

  3. 重置您的网络设置

这应该可以解决这个问题。它与设备/网络相关,与应用程序无关。这很烦人,尤其是如果您的应用依赖于定位服务,并且设备仅支持 WiFi,并且人们在 AppStore 上给予负面评价...请原谅我,我有点情绪化了。

【讨论】:

  • 据我所知,GPS 不需要互联网或 wifi 连接。它只是一个接收器,如果它位于有 2 或 3 颗 GPS 卫星的可访问位置,我们可以获得地理位置坐标。然后如果没有互联网或 wifi 连接,为什么会出现错误?
  • 一票指出重置位置服务和网络设置
  • 您不必执行这些步骤。只需忽略此错误并等待更多更新。请在下面查看我的答案或查看developer.apple.com/library/ios/documentation/corelocation/… 的文档:
  • 我在我的设备(iPhone 5S、iOS 8.1.3)上使用 MapKit 和 CoreLocation 时遇到了完全相同的问题。我无法获得位置,并且一次又一次地遇到相同的错误(尽管移动网络信号良好)。直到我打开 WiFi,一切都解决了!奇怪...谢谢!
  • @DuraiAmuthan.H iPad 没有实际的 GPS 硬件。他们使用 wifi MAC 地址数据库来确定您的位置。
【解决方案3】:

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

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

Apple Documentation

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 也为我工作。谢谢
    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

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

          调试 > 位置 >(我的被检查为 None 而不是 City Bicycle Ride 例如)

          【讨论】:

            【解决方案9】:
            1. 在模拟器中转到设置 > 常规 > 重置 > 重置位置和隐私

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

            【讨论】:

              【解决方案10】:

              假设你使用的是模拟器,你可以Debug -&gt; Location并设置一个位置。

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

              【讨论】:

                【解决方案11】:

                如果您使用的是custom location,请确保您有正确的经纬度方式,我在意识到之前将其颠倒并浪费了 3 个小时...

                【讨论】:

                • 我在这里我也浪费了 2 个小时,将纬度和经度设置在正确的位置。
                【解决方案12】:

                我之前看到过这个问题,有办法解决,但是只能运行一次。如果要重新运行项目,每次都需要重复解决方案。

                1.在Xcode中,Product -> Scheme -> Edit Scheme,然后取消“Allow Location Simulator”。

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

                3.回到Xcode,重复第一步。

                4.到iOS模拟器并重置。然后就可以了。

                【讨论】:

                  【解决方案13】:

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

                  【讨论】:

                    【解决方案14】:
                    1. 我已重置内容和设置。
                    2. 从派生数据中删除数据。
                    3. 重新启动 Xcode 和模拟器并为我工作。

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

                    【讨论】:

                      【解决方案15】:

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

                      【讨论】:

                        【解决方案16】:

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

                        【讨论】:

                          【解决方案17】:

                          在设备中试用。有时模拟器无法获取您的位置。

                          【讨论】:

                            【解决方案18】:

                            在模拟器中回家

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

                            【讨论】:

                              【解决方案19】:

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

                              【讨论】:

                                猜你喜欢
                                • 2015-05-19
                                • 2015-10-29
                                • 2010-11-24
                                • 1970-01-01
                                • 2013-10-21
                                • 2014-01-04
                                • 2016-07-23
                                • 1970-01-01
                                • 1970-01-01
                                相关资源
                                最近更新 更多