Я делаю приложение погоды с помощью OpenweatherAPI. Я загружаю данные из Интернета, но когда я хочу передать его другому классу, он отображается как ноль. Вот код:iOS Swift App, Openweather API
Так что это класс я получаю данные из API
var currentTemp: Double {
if _currentTemp == nil {
_currentTemp = 120.0
}
return _currentTemp
}
func downloadWeatherDetails(completed: @escaping DownloadComplete) {
Alamofire.request(CURRENT_WEATHER_URL).responseJSON { response in
let result = response.result
if let dict = result.value as? Dictionary<String, Any> {
if let main = dict["main"] as? Dictionary<String, Any> {
if let currentTemperature = main["temp"] as? double_t {
let kelvinToCelsiusPreDivision = (currentTemperature - 273.15)
let kelvinToCelsius = Double(round((10 * kelvinToCelsiusPreDivision)/10))
self._currentTemp = kelvinToCelsius
print(self._currentTemp)
}
}
}
completed()
} }
И в mainVC - ViewController:
func updateMainUI() {
currentTempLabel.text = "\(currentWeather.currentTemp)"
}
Я, конечно, вызывающему updateMainUI в ViewDidLoad , но IMHO Я думаю, что метод, который обновляет пользовательский интерфейс, вероятно, вызывается перед получением данных из JSON.
Ярлык приложения показывает 120 - так что он считается нулевым ... Извините, скобки, если что-то не так. Спасибо за помощь в совет :)
EDIT:
Оу, и я забыл добавить .. Данные API прекрасно подходит, поэтому вызов API работает :)
Необходимо выполнить обновление интерфейса после того, как обработчик 'завершения' был вызван, и только в этот момент данные будут доступны. – dlbuckley