83

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

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

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

19 回答 19

153

如果您使用的是模拟器:

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

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

于 2013-06-18T08:37:47.053 回答
107
  1. 检查您是否确实拥有有效的 WiFi 和 3G 连接

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

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

  3. 重置您的网络设置

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

于 2011-07-20T21:50:57.443 回答
24

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

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

Apple Documentation

于 2014-09-10T03:25:26.027 回答
19

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

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

于 2013-12-18T16:24:13.023 回答
14

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

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

于 2014-07-09T17:10:27.967 回答
9

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

在此处输入图像描述

于 2015-03-23T17:46:14.633 回答
7

我也有同样的问题。我相信此 SO 帖子中涵盖了可能的解释/修复。

于 2011-05-30T02:24:23.753 回答
5

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

调试>位置>(我的检查是无而不是城市自行车骑行例如)

于 2014-11-07T00:27:11.797 回答
5
  1. 在模拟器中转到设置>常规>重置>重置位置和隐私

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

于 2015-04-10T11:39:23.380 回答
3

假设您使用的是模拟器,您可以Debug -> Location设置一个位置。

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

于 2014-03-18T20:38:17.583 回答
2

如果你使用的是custom location确保你有正确的方法,我把它颠倒过来浪费了3个小时才意识到......

于 2015-03-30T04:23:52.833 回答
2

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

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

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

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

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

于 2015-07-03T09:00:12.813 回答
1

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

于 2015-01-11T18:46:58.720 回答
1
  1. 我已重置内容和设置。
  2. 从派生数据中删除数据。
  3. 重新启动 Xcode 和模拟器并为我工作。

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

于 2015-07-02T10:10:54.223 回答
1

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

于 2015-12-05T17:03:13.360 回答
1

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

在此处输入图像描述

于 2019-09-22T02:13:15.070 回答
0

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

于 2017-01-10T14:02:00.727 回答
0

在模拟器中回家

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

于 2017-12-17T09:42:31.723 回答
0

添加权限时隐私-使用时的位置信息.plist中的使用说明已为我解决

于 2019-06-06T00:56:17.040 回答