Первый: извините за плохой заголовок. Я не знаю, как лучше описать мою проблему.
У меня есть этот код в моем проекте Xcode:
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
var currentLocation = "PLACEHOLDER"
override func viewDidLoad() {
self.locationManager.requestWhenInUseAuthorization()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
super.viewDidLoad()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
currentLocation = String(locValue.latitude)
}
@IBAction func sendLocation() {
locationManager.startUpdatingLocation()
print(currentLocation)
locationManager.stopUpdatingLocation()
}
}
Печатает местоположение пользователя при нажатии на кнопку UIB.
Это работает. Но по какой-то причине при первом нажатии кнопки UIB после перезапуска приложения печатается PLACEHOLDER
вместо местоположения.
Означает: когда я запускаю приложение и нажимаю на UIButton три раза, я получаю это в консоли:
PLACEHOLDER
56.153666216328625
56.153666216328625
вместо этого:
56.153666216328625
56.153666216328625
56.153666216328625
Я также пытался сохранить как UserDefaults
вместо var
, но это приводит к той же проблеме.
Что я делаю не так?