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

问题描述 投票:0回答:20

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

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

- (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.)" 
ios iphone core-location cllocationmanager cllocation
20个回答
162
投票

如果您使用模拟器:

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

选择

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


111
投票
  1. 检查您是否确实拥有有效的 WiFi 和 3G 连接

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

  2. 前往设置并重置您的位置服务

  3. 重置您的网络设置

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


27
投票

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

位置管理器的文档说这个错误是暂时的。它让您知道它未能立即检索位置,但它会继续尝试。 “在这种情况下,您可以简单地忽略该错误并等待新事件。”这是使用名为

locationManager:didFailWithError:
的方法的一种非常愚蠢的方式 - 感谢 Apple!

Apple Documentation


18
投票

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

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


14
投票

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

我必须通过

"iOS Simulator" >> "Reset Content and
  Settings...
清除所有内容。


9
投票

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

enter image description here


7
投票

我也有同样的问题。 我相信可能的解释/修复已包含在这篇 SO 帖子中


5
投票

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

调试 > 位置 >(我的被选中 None 而不是 City Bicycle Ride 例如)


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

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


3
投票

假设您使用的是模拟器,您可以

Debug -> Location
并设置位置。

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


3
投票

如果您使用

custom location
,请确保您的经度和纬度正确,我把它颠倒了,在我意识到之前浪费了3个小时......


3
投票

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

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

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

3.再次进入Xcode,重复第一步。

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


3
投票

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

enter image description here


1
投票

此类问题可以通过将位置设置为“

Apple
”来解决。至少它可以用于测试目的。


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

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


1
投票

对于返回的开发者:)只需从模拟器菜单中选择“

Debug->Location->Freeway Drive
”即可。如果问题仍然存在,请在模拟器菜单中执行“模拟器->重置内容和设置”后尝试。这曾经帮助我解决过同样的问题。有时模拟器位置设置为“
Custom location
”,因此它没有检测到任何内容。


0
投票

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


0
投票

在模拟器中回家

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


0
投票

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


0
投票

在“设置”>“隐私和安全”下关闭和打开位置服务使错误消失。可能的原因是设备在 XCode 中进行模拟后没有完全恢复到使用实际位置(它也经常获取旧位置)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.