意外发现位置管理器没有

时间:2019-02-14 10:16:17

标签: ios swift cllocationmanager

我正试图在用户启动我的应用程序时捕获其位置,我创建了此基本功能,该功能应获得纬度和经度。

但是由于某种原因,它会以意外找到nil的形式返回,同时隐式展开一个Optional值。

首先,我认为可能是因为应用程序启动后立即调用了此函数,因此我将该函数包装在Delay中。这似乎没有帮助

func setStartLocation(){
   DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2), execute: 
    {
        let Startlat = String(format: "%f", LocationManager.sharedInstance.location.coordinate.latitude)
        let Startlong = String(format: "%f", LocationManager.sharedInstance.location.coordinate.longitude)
    )}
}

这是确切的错误

  

致命错误:在隐式展开一个   可选值2019-02-14 10:01:24.610816 + 0000   LoopUltimate [6970:101367]致命错误:意外发现为nil   隐式展开一个可选值

1 个答案:

答案 0 :(得分:0)

从不施加不可靠的延迟来等待某事。

location显然是nil,这会导致错误。 CLLocationManager异步工作。

在您的LocationManager类中,您必须调用startUpdatingLocation()并实现委托方法

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

在此方法中,调用setStartLocation()或添加逻辑以在位置有效时得到通知。

并且请遵循变量名以小写字母开头的命名约定。