«Поток 1: сигнал Sigabrt» при вызове requestLocation () - PullRequest
0 голосов
/ 14 мая 2019

попробуйте использовать CLlocationManager().requestLocation(), чтобы узнать текущее местоположение пользователя. Но приложение вылетает и показывает сигнал Sigabrt. Я знаю, что это, вероятно, из-за неподключенных выходов, поэтому я удостоверяюсь, что они все были связаны, но компилятор все еще выдает это предупреждение. Я правильно реализовал ключи в п.листе кстати.

Интересно, когда я изменяю requestLocation() на startUpdatingLocation(), все работает.

let locationManager = CLLocationManager()

override func viewDidLoad() {
    super.viewDidLoad()

    locationManager.requestAlwaysAuthorization()
    locationManager.requestWhenInUseAuthorization()
    if CLLocationManager.locationServicesEnabled() {
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestLocation()
    }
}

Я надеюсь, что кто-нибудь скажет мне, что я сделал не так, или я должен просто заменить requestLocation () на startUpdatingLocation ().

1 Ответ

0 голосов
/ 14 мая 2019

Apple в документации заявляет , что вам необходимо реализовать эти методы делегата, если вы хотите использовать requestLocation():

locationManager(_:didUpdateLocations:) и locationManager(_:didFailWithError:).

У меня работает следующий фрагмент кода.

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

    let locationManager = CLLocationManager()

    override func viewDidLoad() {
        super.viewDidLoad()

        locationManager.requestAlwaysAuthorization()
        locationManager.requestWhenInUseAuthorization()
        if CLLocationManager.locationServicesEnabled() {
            locationManager.delegate = self
            locationManager.desiredAccuracy = kCLLocationAccuracyBest
            locationManager.requestLocation()
        }

    }

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        print("LOCATIONS: \(locations)")
    }

    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        print("ERROR: \(error)")
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...