位置经理出乎意料地发现没有

问题描述 投票:-1回答:1

我试图在他们启动我的应用程序时捕获用户的位置,我创建了这个基本功能,应该得到Lat和Long。

但由于某种原因,它会在意外发现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)
    )}
}

这是确切的错误

致命错误:在隐式解包可选值时意外发现nil 2019-02-14 10:01:24.610816 + 0000 LoopUltimate [6970:101367]致命错误:在隐式解包可选值时意外发现nil

ios swift cllocationmanager
1个回答
0
投票

永远不要申请不可靠的延迟等待某事。

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.