То, что я делаю, очень просто.
class HomeDatasourceController: UICollectionViewController, CLLocationManagerDelegate{
let locationManager:CLLocationManager = CLLocationManager()
//CurrentLocation is my variable that isn't changing on time
var currentLocation = CLLocation(latitude: 5.0, longitude: 5.0)
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
self.locationManager.startUpdatingLocation()
fetchHomeFeed()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
for currentLocationTemp in locations {
self.currentLocation = currentLocationTemp
print("This is latitude: \(currentLocation.coordinate.latitude) , and this is longitude: \(currentLocation.coordinate.longitude)")
}
}
fetchHomeFeed(){
print("Hello: ", self.currentLocation)
}
Когда вызывается fetchHomeFeed, он только распечатывает фиктивное местоположение, в котором я его установил (широта и долгота 5.0), а не мое фактическое местоположение.
Я знаю, что это асинхронно, но я не уверен, как получить вызов по крайней мере ОДИН РАЗ в первый раз, чтобы я мог правильно распечатать свое местоположение (в первый раз).
Мне также необходимо продолжить обновление после этого, потому что я хочу, чтобы в режиме реального времени обновлялось местоположение пользователя.
Я пытался использовать fetchHomeFeed () внутри func locationManager, но это распечатывает ("Hello:", self.currentLocation) несколько раз, и я хочу, чтобы fetchHomeFeed () вызывался только ОДИН РАЗ (с правильным расположением) и после этого местоположение будет вызываться непрерывно, так как у меня будет другой метод, использующий это.
Я не уверен, как это реализовать.