2016-04-13 10 views
0

Ich arbeite gerade an einem Projekt, bei dem ich den Standort des Benutzers in der App abrufen muss. Ursprünglich hatte ich es kodiert nur eine Arbeits Kartenansicht zeigen, wollte aber dann, um es den Nutzern machen zeigen location.I halten den Fehler EXC_BAD_INSTRUCTION auf der Linie bekommenFinden des aktuellen Standorts in Swift Xcode 7.3

self.mapView.showsUserLocation = true

import UIKit 
import MapKit 
import CoreLocation 

class MapViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate 
{ 
    @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 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    // MARK: - Location Delegate Methods 

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

     let location = locations.last 
     let center = CLLocationCoordinate2DMake(location!.coordinate.latitude, location!.coordinate.latitude) 

     let region = MKCoordinateRegion(center: center, span:MKCoordinateSpan(latitudeDelta: 1, longitudeDelta: 1)) 

     self.mapView.setRegion(region, animated: true) 

     self.locationManager.startUpdatingLocation() 
    } 
+2

Wahrscheinlich Ursache: self.mapView ist Nil, weil es nicht mit der Kartenansicht im Interface Builder verbunden ist. – Gereon

Antwort

0

Dies könnte Ihnen helfen.

import UIKit 
import CoreLocation 
import MapKit 

class ViewController: UIViewController, CLLocationManagerDelegate,NSURLConnectionDelegate,UITableViewDataSource,UITableViewDelegate{ 

let locationManager = CLLocationManager() 

var latitude = 0.00; 
var Longitude = 0.00; 




override func viewDidLoad() { 
    super.viewDidLoad() 
    locationManager.delegate = self 
    locationManager.requestLocation() 
    locationManager.requestWhenInUseAuthorization() 
    locationManager.requestAlwaysAuthorization() 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    locationManager.startUpdatingLocation() 

    // Do any additional setup after loading the view, typically from a nib. 
} 


@IBOutlet weak var myLabel: UILabel! 



override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 




func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    if let location11 = locations.first { 
     print("Found User's location: \(location11)") 
     print("Latitude: \(location11.coordinate.latitude) Longitude: \(location11.coordinate.longitude)") 
     latitude = location11.coordinate.latitude 
     Longitude = location11.coordinate.longitude 
     startConnection() 
    } 
} 


func locationManager(manager: CLLocationManager, didFailWithError error: NSError) { 
    print("Failed to find user's location: \(error.localizedDescription)") 
} 

} 

Fügen Sie Berechtigungen in Ihrer PLIST-Datei hinzu.

+1

Die spezifischen Schlüssel, die Sie Ihrem Projekt hinzufügen möchten: target: info.plist für niks290192's Beispiel wäre: ' Datenschutz - Standort Immer Nutzungsbeschreibung' und 'Datenschutz - Standort bei Verwendung Verwendungsbeschreibung' Werte sollten eine Zeichenfolge sein, die einem Benutzer kurz beschreibt, warum Ihre App Standortdienste benötigt. Weitere Informationen finden Sie unter https://developer.apple.com/reference/corelocation/cllocationmanager – Jalakoo

Verwandte Themen