Я очень новичок в разработке iOS и пытаюсь оборачивать голову тем, почему мое приложение рушится с сообщением SIGABRT. Я следую инструкциям (link) о том, как реализовать SDK Google Maps, и насколько я могу судить, у меня есть тот же код.watchValueForKeyPath сбойное приложение в swift
Мой код:
@IBOutlet weak var mapView: GMSMapView!
let locationManager = CLLocationManager()
var didFindMyLocation = false
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
locationManager.requestWhenInUseAuthorization()
locationManager.delegate = self
mapView.addObserver(self, forKeyPath: "myLocation", options: NSKeyValueObservingOptions.New, context: nil)
}
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == CLAuthorizationStatus.AuthorizedWhenInUse {
mapView.myLocationEnabled = true
}
}
private func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
if !didFindMyLocation {
let myLocation: CLLocation = change[NSKeyValueChangeNewKey] as! CLLocation
mapView.camera = GMSCameraPosition.cameraWithTarget(myLocation.coordinate, zoom: 10)
mapView.settings.myLocationButton = true
didFindMyLocation = true
}
}
Катастрофа происходит, когда я добавляю последнюю функцию observeValueForKeyPath, и я не могу понять, почему. Я получаю следующее сообщение об ошибке:
Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: ': An -observeValueForKeyPath: ofObject: change: context: сообщение получено, но не обработано. Путь по ключению: myLocation
Может кто-нибудь сказать мне, что я делаю неправильно?
большое спасибо! Так оно и было. – Amalie