У меня есть объект NS (называемый GoogleSearch), который я использую для получения данных о местоположении пользователя.Вот некоторые глобальные переменные и функция init:
let locationManager = CLLocationManager()
var coordinates: CLLocationCoordinate2D?
override init() {
super.init()
print("1")
DispatchQueue.main.async {
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer
if CLLocationManager.locationServicesEnabled() {
self.locationManager.startUpdatingLocation()
}
}
}
Далее, вот мой метод делегата:
extension GoogleSearch: CLLocationManagerDelegate {
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print("2")
let userLocation: CLLocation = locations[0] as CLLocation
self.coordinates = CLLocationCoordinate2D(latitude: userLocation.coordinate.latitude, longitude: userLocation.coordinate.longitude)
}
}
Далее я пытаюсь получить доступ к координатам (заданным в делегатеметод) в более поздней функции:
func searchForPlaces(completion: @escaping ([place])->()) {
print(coordinates)
}
Наконец, в ViewController , который я реализую NSobject , у меня есть следующий код в viewDidLoad:
self.googleSearch = GoogleSearch()
DispatchQueue.main.async {
self.googleSearch.searchForPlaces(completion: { (places) in
DispatchQueue.main.async {
self.places = places
self.placesCollectionView.reloadData()
}
})
}
Проблема в том, что при печати координат в функциях searchForPlaces печатается ноль, потому что он запускается до вызова метода делегата.Что-то, что я должен изменить в своем NSObject или, возможно, в моем ViewController, чтобы обеспечить мне доступ к координатам из searchForPlaces ()?
Спасибо.