Swift WatchKit(watchOS 2)CLLocationManager返回零坐标

Swift WatchKit(watchOS 2)CLLocationManager返回零坐标,swift,core-location,watchkit,apple-watch,watchos-2,Swift,Core Location,Watchkit,Apple Watch,Watchos 2,我可以说我不知道这是怎么发生的 我有一个watchOS 2应用程序,我正在工作。我一整天都在做它,它使用核心位置。现在的位置还不错。我需要lat/long,以便进行以这些参数为参数的网络调用 无论如何,我在现场测试时发现我的应用程序崩溃了。它一次又一次地砸在我的手表上 回到家进行调试,我注意到URL的坐标值为零。奇怪的是,它连续几个月每天都在工作。我没有对核心位置代码做任何更改 我正在使用 func locationManager(manager: CLLocationManager, didU

我可以说我不知道这是怎么发生的

我有一个watchOS 2应用程序,我正在工作。我一整天都在做它,它使用核心位置。现在的位置还不错。我需要lat/long,以便进行以这些参数为参数的网络调用

无论如何,我在现场测试时发现我的应用程序崩溃了。它一次又一次地砸在我的手表上

回到家进行调试,我注意到URL的坐标值为零。奇怪的是,它连续几个月每天都在工作。我没有对核心位置代码做任何更改

我正在使用

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
以检测何时进行网络呼叫。我只有在有这些坐标的情况下才能打网络电话。我查看
locations
参数,看看它是否大于0,然后得到其中最后一个对象的lat/long。我还检查了运行的
locationManager
实例中的值

无论如何,这些值是
nil
!如果调用函数
locationManager:didUpdateWithLocations:
,这些值怎么可能为零

我很困惑,因为它发生在现场测试的中间。我出去的时候它整天都在工作,大约在那时它就停止了。其他应用程序,如我的苹果手表上的地图应用程序,工作正常。此外,所有位置权限都处于启用状态。我甚至删除了我的iOS设备和手表上的应用程序,开始使用新的应用程序。这并没有解决问题

我只是在从web服务器获得成功响应后才调用函数来停止更新位置,只有在我从核心位置获得lat/long的合法值时才会启动该响应


有什么想法吗?

使用watchOS 1,watch应用程序需要请求手机应用程序确定位置


使用watchOS 2,watch应用程序可以调用
requestLocation
一次。解释它。

我也有同样的问题,因为我在ExtensionLegate中实现了
CLLocationManagerDelegate
WKInterfaceController
中的相同实现工作得非常好

我明白了。但Xcode允许我像在iOS项目中一样,使用CLLocationManager编写相同的代码来获取当前位置。它没有警告我手表没有内置GPS。此外,它还不时地抓取位置。当我测试Watch应用程序时,我在控制台中看到坐标打印输出。这让我觉得我应该能够从手表上请求位置。也许这对我来说并不是iPhone上的交流方式?是的,这正是我所遵循的。它抓取一个位置(这是完美的),但它随后停止更新位置,或者如果我去其他地方,它将不会更新。它要么报告为零,要么保持与以前相同。如果我们希望位置管理器独立于UI,该怎么办?嗯,看起来我可以使用另一个NSObject作为CLLocationManager,并将其作为ExtensionElegate的属性。