Ich erhalte einen ähnlichen Fehler in iOS 9 (Arbeiten mit Xcode 7 und Swift 2):
Versuch, MapKit-Standortupdates zu starten, ohne um Standortgenehmigung zu bitten. Muss zuerst -[CLLocationManager requestWhenInUseAuthorization] oder -[CLLocationManager requestAlwaysAuthorization] aufrufen.
Ich folgte einem Tutorial, aber der Tutor verwendete iOS 8 und Swift 1.2. Es gibt einige Änderungen in Xcode 7 und Swift 2. Ich habe diesen Code gefunden und er funktioniert gut für mich:
import UIKit
import MapKit
import CoreLocation
class MapViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
// MARK: Properties
@IBOutlet weak var mapView: MKMapView!
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.startUpdatingLocation()
self.mapView.showsUserLocation = true
}
// MARK: - Location Delegate Methods
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last
let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 1, longitudeDelta: 1))
self.mapView.setRegion(region, animated: true)
}
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
print("Fehler: " + error.localizedDescription)
}
}
Zuletzt habe ich das in die info.plist eingefügt: Information Property List: NSLocationWhenInUseUsageDescription Value: App benötigt Standortserver für Personal