Добавить координаты (из UIViewController) в файл констант - PullRequest
0 голосов
/ 10 ноября 2018

Я получил координаты от пользователя в моем главном контроллере вида, как это:

import CoreLocation

private let locationManager = CLLocationManager()

func findCurrentLocation() {
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestWhenInUseAuthorization()

        if CLLocationManager.locationServicesEnabled() {
            locationManager.startUpdatingLocation()
            //locationManager.startUpdatingHeading
        }
    }

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
        print("locations = \(locValue.latitude) \(locValue.longitude)")
    }

У меня есть этот URL в отдельном файле (мой файл констант)

let NEAREST_CITY_URL = BASE_URL + "nearest_city?lat={{LATITUDE}}&lon={{LONGITUDE}}&key=" + API_KEY

Мне нужно получить широту и долготу из контроллера представления в этот URL. Как бы я передал это там?

Я предполагаю, что это должно выглядеть примерно так, но я не могу понять, как скомпилировать его без ошибок.

let NEAREST_CITY_URL = BASE_URL + "nearest_city?lat=\(MainVC.locationManager.locValue.latitude)&lon=\(MainVC.locationManager.locValue.longitude)&key=" + API_KEY

1 Ответ

0 голосов
/ 10 ноября 2018

MainVC должен установить данные в ваш файл констант как глобальную переменную (поскольку вы, похоже, хотите использовать глобальные переменные ... eek). Затем вы можете предложить NEAREST_CITY_URL, который вычисляет строку с использованием этих данных.

В вашем файле констант:

var userLoc : CLLocationCoordinate2D?

let NEAREST_CITY_URL = BASE_URL + "nearest_city?lat=\(userLoc.latitude ?? 0.0)&lon=\(userLoc.longitude ?? 0.0)&key=" + API_KEY

На ваш взгляд контроллер:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
    print("locations = \(locValue.latitude) \(locValue.longitude)")
    userLoc = locValue
}

Теперь очень плохо иметь глобальный файл констант, как вы делаете ... по крайней мере, поместить все свои константы в одноэлементный класс с именем Constants. Но я здесь, чтобы прямо ответить на ваш вопрос, так что ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...