SWIFT - LocationManager wiederholt durchlaufen?
Ich habe eine locationManager-Funktion, um den aktuellen Standort des Benutzers zu ermitteln und den Namen der Stadt und des Staates zu veröffentlichen. Ich habe eine print-Anweisung, mit der ich in meiner Konsole überprüfen kann, ob alles ordnungsgemäß funktioniert. Der Standort der Stadt wird jedoch dreimal gedruckt. Dies verursacht tatsächlich ein Problem in meiner eigentlichen App, das jedoch über den Punkt dieser Frage hinausgeht.
Meine Funktion ist wie folgt:
var usersLocation: String!
var locationManager: CLLocationManager!
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let userLocation: CLLocation = locations[0]
CLGeocoder().reverseGeocodeLocation(userLocation) { (placemarks, error) -> Void in
if error != nil {
print(error)
} else {
let p = placemarks?.first // ".first" returns the first element in the collection, or nil if its empty
// this code above will equal the first element in the placemarks array
let city = p?.locality != nil ? p?.locality : ""
let state = p?.administrativeArea != nil ? p?.administrativeArea : ""
self.navigationBar.title = ("\(city!), \(state!)")
self.usersLocation = ("\(city!), \(state!)")
self.locationManager.stopUpdatingLocation()
print(self.usersLocation)
self.refreshPosts()
}
}
}
So wird in meinem Ausdruck (self.usersLocation) dreimal in meiner Konsole gedruckt. Ist das normal
UPDATE TO SHOW VIEWDIDLOAD
override func viewDidLoad() {
super.viewDidLoad()
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 250.0
}