locationManager.location返回nil

时间:2019-01-27 15:15:53

标签: ios swift core-location cllocationmanager

我正在使用swift4.2Xcode 10,并且我试图使iOS应用使用位置服务,但它给了我例外:
Fatal error: Unexpectedly found nil while unwrapping an Optional value

所以我尝试检查location是否返回nil,所以我复制了代码并打印了位置,并返回了null,我在Xcode中模拟了产品> 方案> 编辑方案> 默认位置,并在调试区域中检查位置,并模拟到位置我选择任何一个知道问题的人?

import CoreLocation

class LocationVC: UIViewController,CLLocationManagerDelegate {

    let locationManager = CLLocationManager()
    var currentlocation:CLLocation!

    override func viewDidLoad() {
        super.viewDidLoad()
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestWhenInUseAuthorization()
        locationManager.startMonitoringSignificantLocationChanges()
   }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        authorizelocationstates()
    }

    func authorizelocationstates(){
        if CLLocationManager.authorizationStatus() == .authorizedWhenInUse {
            currentlocation = locationManager.location
            print(currentlocation)
        }
        else{
            locationManager.requestWhenInUseAuthorization()
            authorizelocationstates()
        }
        }

1 个答案:

答案 0 :(得分:2)

我已经运行了您的代码,我只是在info.plist文件中添加了丢失的密钥隐私-使用时的位置用法说明

我已经对您的代码进行了一些更改,并获得了nil的值,因为方法多次调用,并且当用户给予许可时再次调用该方法,并再次调用该方法并打印位置详细信息,但事实仍然如此{{1} }变量还没有用户位置数据。

当代表locationManager

时,在locationManager中获取位置详细信息

我已经对您的代码进行了一些更改:

didUpdateLocations

enter image description here

希望它会对您有所帮助。