Функция не выполняется после ввода названия города в Google Place Picker в Swift 4 - PullRequest
0 голосов
/ 29 июня 2018

Я пробовал несколько раз, но никаких подсказок. Проблема заключается в том, что когда город вводится в Google Place Picker в первый раз, на консоль выводятся все полученные данные о погоде в формате json (это означает, что вызывается как функция текущей погоды, так и функция прогноза погоды), но когда вводится город во второй раз вызывается только функция данных о текущей погоде, но функция данных о прогнозе погоды не выполняется, а tableView показывает данные из предыдущего города, поскольку прогноз погоды не выполнялся во второй раз.

// function below calls both functions when user enters city
func userEnteredCity(city: String, placeId: String)
    {
        let parameters :[String:String] = ["q": city, "appid": APP_ID]
        getWeather(weatherUrl: Current_WEATHER_URL, params: parameters)
        weatherForecast(weatherUrl: Forecast_WEATHER_URL, params: parameters)
        loadFirstPhotoForPlace(placeID: placeId)
    }
/* getWeather provides currentWeather and weatherForecast provide forecast data functions have been defined below*/

   func weatherForecast(weatherUrl: String, params: [String:String])
    {
        Alamofire.request(weatherUrl, method: .get, parameters: params).responseJSON
            {
                (response) in
                let result = response.result
                if let dictionary = result.value as? Dictionary<String, AnyObject>
                {
                    if let list = dictionary["list"] as? [Dictionary<String, AnyObject>]
                    {
                        for item in list {
                        print(item)
                        let forecast = ForecastData(weatherDict: item)
                        self.forecastArray.append(forecast)
                        }
                         self.weatherTable.reloadData()
                    }


                }

        }

}

Пожалуйста, помогите мне в этом вопросе.

1 Ответ

0 голосов
/ 29 июня 2018

Во-первых, выполняется ли оператор print и печатает ли прогнозные данные для нового города?

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

func weatherForecast(weatherUrl: String, params: [String:String]) {
    self.forecastArray.removeAll()
    Alamofire.request(weatherUrl, method: .get, parameters: params).responseJSON {
        // ... same as before
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...