我想获取当前位置,但出现错误。
这是我的视图控制器的一个片段。
- (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.)"
如果您使用模拟器:
command + shift + ,
打开方案编辑器Allow Location Simulation
选择
None
作为默认位置可能会导致问题。
检查您是否确实拥有有效的 WiFi 和 3G 连接
...如果你这样做,那么:
前往设置并重置您的位置服务
这应该可以解决这个问题。它与设备/网络相关,与应用程序无关。这很烦人,尤其是如果您的应用程序依赖于位置服务并且设备仅支持 WiFi,并且人们在 AppStore 上给出负面评价...请原谅,我在那里有点情绪化。
只需忽略此错误并等待更多更新或其他错误。
位置管理器的文档说这个错误是暂时的。它让您知道它未能立即检索位置,但它会继续尝试。 “在这种情况下,您可以简单地忽略该错误并等待新事件。”这是使用名为
locationManager:didFailWithError:
的方法的一种非常愚蠢的方式 - 感谢 Apple!
Apple Documentation
尝试重新启动模拟器(假设您正在使用该模拟器)。
在尝试了其他一切之后,这对我有用。
重启模拟器对我不起作用。
我必须通过
清除所有内容。
"iOS Simulator" >> "Reset Content and Settings...
我在模拟器上收到此错误。单击调试面板中的位置按钮并设置位置解决了我的问题。 (确保按钮为蓝色)
我也有同样的问题。 我相信可能的解释/修复已包含在这篇 SO 帖子中。
更改模拟器上的“位置”对我有用。
调试 > 位置 >(我的被选中 None 而不是 City Bicycle Ride 例如)
在模拟器中,转到“设置”>“常规”>“重置”>“重置位置和隐私”
退出模拟器并再次运行应用程序
假设您使用的是模拟器,您可以
Debug -> Location
并设置位置。
如果您没有选择任何选项,则会出现此错误。
如果您使用
custom location
,请确保您的经度和纬度正确,我把它颠倒了,在我意识到之前浪费了3个小时......
我以前见过这个问题,有一种方法可以解决它,但只能运行一次。如果你想再次运行该项目,则每次都需要重复该解决方案。
1.在Xcode中,产品->方案->编辑方案,然后取消“允许位置模拟器”。
2.到iOS模拟器并重置内容和设置。
3.再次进入Xcode,重复第一步。
4.到iOS模拟器并重置。然后就可以了。
此类问题可以通过将位置设置为“
Apple
”来解决。至少它可以用于测试目的。
- 我已重置内容和设置。
- 从派生数据中删除了数据。
- 重新启动 Xcode 和模拟器并为我工作。
来自@Mem和其他许多人的回答,谢谢
对于返回的开发者:)只需从模拟器菜单中选择“
Debug->Location->Freeway Drive
”即可。如果问题仍然存在,请在模拟器菜单中执行“模拟器->重置内容和设置”后尝试。这曾经帮助我解决过同样的问题。有时模拟器位置设置为“Custom location
”,因此它没有检测到任何内容。
在设备中尝试。有时模拟器无法获取您的位置。
在模拟器中回家
主页 -> 设置 -> 隐私 -> 位置 -> 选择应用程序并选择始终
在 info.plist 中添加权限“隐私 - 位置使用时使用说明”时,它已为我解决了
在“设置”>“隐私和安全”下关闭和打开位置服务使错误消失。可能的原因是设备在 XCode 中进行模拟后没有完全恢复到使用实际位置(它也经常获取旧位置)。