Получить температуру текущего местоположения API Swift - PullRequest
0 голосов
/ 21 октября 2018

Может кто-нибудь помочь мне с этим кодом API.Я получил все, но одна ошибка исправлена.

Вот мой код:

 let APIUrl = NSURL(string:"https://api.openweathermap.org/data/2.5/weather?   lat=35&lon=150&appid=e7b2054dc37b1f464d912c00dd309595&units=Metric")
 var request = URLRequest(url:APIUrl! as URL)

 let task = URLSession.shared.dataTask(with: request as URLRequest)

 guard let data = Data else {return}

 let decoder = JSONDecoder()

 let weatherData = try decoder.decode(MyWeather, from: data)

 let ggtemp = weatherData.main?.temp
    print(ggtemp, "THIS IS THE TEMP")
        DispatchQueue.main.async {
        tempDisplay.text = String (ggtemp) + " c"
     }
 }

Изображение ошибки

После того, как я исправляю данные об ошибках= data "error, я получаю сообщение об ошибке" let task = URLSesss ... "

Любая помощь приветствуется.Заранее спасибо.

1 Ответ

0 голосов
/ 21 октября 2018

Попробуйте этот код

let APIUrl = NSURL(string:"https://api.openweathermap.org/data/2.5/weather?lat=35&lon=150&appid=e7b2054dc37b1f464d912c00dd309595&units=Metric")
var request = URLRequest(url:APIUrl! as URL)
request.httpMethod = "GET"

let dataTask = URLSession.shared.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in

    if (error != nil) {
        print(error ?? "Error is empty.")
    } else {
        let httpResponse = response as? HTTPURLResponse
        print(httpResponse ?? "HTTP response is empty.")
    }

    guard let responseData = data else {
        print("Error: did not receive data")
        return
    }

    do {

        let weatherData = try JSONDecoder().decode(MyWeather.self, from: responseData)
        let ggtemp = weatherData.main?.temp
        print(ggtemp, "THIS IS THE TEMP")
        DispatchQueue.main.async {
            tempDisplay.text = String (ggtemp) + " c"
        }

    } catch  {
        print("error parsing response from POST on /todos")
        return
    }

})

dataTask.resume()
...