2016-12-23 4 views
0

Ich versuche, Benutzerstandort in meiner iPhone App zu bekommen. Es hat in info.plist die benötigte Berechtigung angegeben (benutze den Standort, auch wenn die App nicht offline ist). Aber ich sehe immer noch nicht, dass mein Delegierter mindestens einmal ausgelöst wird, was bedeutet, dass ich nicht einmal den aktuellen Standort bekomme. Hier ist der Code:Benutzer Standort und Updates erhalten

import UIKit 
import CoreLocation 
class ViewController: UIViewController, CLLocationManagerDelegate { 

var locationManager = CLLocationManager(); 
override func viewDidLoad() { 


    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    locationManager.delegate = self 

    if (CLLocationManager.authorizationStatus() == CLAuthorizationStatus.notDetermined) { 
     self.locationManager.requestAlwaysAuthorization(); 
    } 

    locationManager.distanceFilter = kCLDistanceFilterNone 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    locationManager.startUpdatingLocation() 
} 

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

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    let userLocation:CLLocation = locations[0] 
    let long = userLocation.coordinate.longitude; 
    let lat = userLocation.coordinate.latitude; 


    print(lat) 
} 

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) 
{ 
    locationManager.stopUpdatingLocation() 
    if ((error) != nil) 
    { 
     print(error) 
    } 
} 

Konnte mir jemand mögliche Probleme aufzeigen?

+0

Es ist eine Standortgenehmigung erforderlich oder nicht? – iMHitesh

+0

Ja, es wurde um Erlaubnis gefragt und ich habe es erlaubt. Bei jedem nächsten Programmlauf erhalte ich diese Erlaubnisanfrage nicht, da sie in den Einstellungen gespeichert ist. Sache ist, dass Delegat, der auf Standort-Update ausgelöst werden sollte, tatsächlich nicht aufgerufen wird. Ich vermute, dass dies Multithreading-Problem sein könnte, z. Aufruf von Haupt-Thread und auf anderen Thread, dass die Instanz nicht existiert ... Jetzt prüfen ... – seeker

+0

Mögliche Duplikate von [Wie bekomme ich Location-Benutzer mit CLLocationManager in Swift?] (http://StackOverflow.com/Questions/24252645/ how-to-get-location-benutzer-whith-cllocationmanager-in-swift) – xoudini

Antwort

0

Versuchen Sie, locationManager.stopUpdatingLocation() in locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) zu entfernen. Es sollte funktionieren.

Verwandte Themen