Rei*_*ner 10 core-location ios core-motion
最近,我在 Xcode 中记录了很多来自 CoreMotion 框架的奇怪警告,这些警告与功能相关getLocationForBundleID:
[Client] {"msg":"#NullIsland Either the latitude or longitude was exactly 0! That's highly unlikely", "latIsZero":0, "lonIsZero":0}
[Client] {"msg":"#NullIsland Received a latitude or longitude from getLocationForBundleID that was exactly zero", "latIsZero":0, "lonIsZero":0, "location":'28 5B E0 D7 EB 7F 00 00'}
Run Code Online (Sandbox Code Playgroud)
我没有看到我的应用程序有任何故障。所以也许这些日志可以被忽略,但无论如何它们都很烦人。
我的问题是:
如何纠正潜在错误?
我怎样才能停止这些警告?
显然,如果在传递第一个位置之前读取locationa 的属性,则会记录此错误消息。CLLocationManagerCLLocationManager
我的解决方案如下:
\n我无论如何都使用它的子类,CLLocationManager它允许我以编程方式设置location测试属性。\n这是按如下方式完成的:
private var _location: CLLocation?\n@objc dynamic override var location: CLLocation? {\n get { \n let usedLocation = _location ?? super.location // Here the error is logged if no location has been delivered yet\n return usedLocation \n }\n set {\n _location = newValue\n } \n}\nRun Code Online (Sandbox Code Playgroud)\n这个子类现在有一个额外的属性
\n var anyLocationDelivered = false \nRun Code Online (Sandbox Code Playgroud)\n是设置true在
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {\n locationManager.anyLocationDelivered = true\n // \xe2\x80\xa6\n } \nRun Code Online (Sandbox Code Playgroud)\n现在吸气剂是
\nget { \n guard anyLocationDelivered else { return nil }\n let usedLocation = _location ?? super.location\n return usedLocation \n} \nRun Code Online (Sandbox Code Playgroud)\n现在不再记录此错误消息。
\n| 归档时间: |
|
| 查看次数: |
2587 次 |
| 最近记录: |