Менеджер местоположения Неожиданно найден ноль - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь захватить местоположение пользователя, когда он запускает мое приложение, я создал эту базовую функцию, которая должна получать значения Lat и Long.

Но по какой-то причине он продолжает возвращаться как неожиданно найденный ноль, неявно разворачивая необязательное значение.

Сначала я подумал, что это могло произойти, потому что я вызывал эту функцию, как только приложениезапустил, поэтому я завернул функцию в задержку.Это, похоже, не помогло

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] Неустранимая ошибка: неожиданно обнаружен ноль при неявном развертывании необязательного значения

1 Ответ

0 голосов
/ 14 февраля 2019

Никогда не применяйте ненадежные задержки для ожидания чего-либо.

location - это явно nil, это вызывает ошибку.CLLocationManager работает асинхронно.

В вашем LocationManager классе вам нужно вызвать startUpdatingLocation() и реализовать метод делегата

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

В этом вызове метода setStartLocation() или добавитьлогика получения уведомлений, когда местоположение действительно.

И, пожалуйста, соблюдайте соглашение об именах, согласно которому имена переменных начинаются со строчной буквы.

...