SWIFT - LocationManager цикл через несколько раз?
У меня есть функция locationManager для захвата текущего местоположения пользователей и публикации названия города и штата. У меня есть заявление на печать, чтобы я мог проверить в своей консоли, все ли работает правильно ... и это так. Тем не менее, он печатает расположение города 3 раза. Это на самом деле вызывает проблему в моем реальном приложении, но это выходит за рамки этого вопроса.
Моя функция заключается в следующем:
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()
}
}
}
Так что в моем принте (self.usersLocation) он будет напечатан в моей консоли три раза. Это нормально?
ОБНОВЛЕНИЕ, ЧТОБЫ ПОКАЗАТЬ
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
}