s
Size: a a a
s
s
t
s
struct WeatherRoot: Decodable {
let list: List
}
t
struct WeatherRoot: Decodable {
let list: List
}
s
s
D
DI
weatherModel
nil? parse(){
AF.request("http://api.openweathermap.org/data/2.5/forecast?q=London&units=metric&appid=f7fbda9fc5f8e8a30619d82ee864d474").responseJSON{response
in
guard
let jsonData = response.data
else {
return}
do {
let weatherModel =
try? JSONDecoder().decode(WeatherModel.
self,from: jsonData)
let list =
try List(from: weatherModel
as! Decoder)
self.degreesLabel.text = String(list.main.temp)
}
catch {
print("Error")
}
}
}
}
WeatherModel: Codable {
let cod: String
let message, cnt: Int
let list: [List]
let city: City
}
// MARK:
- List
struct List: Codable {
let dt: Int
let main: MainClass
let weather: [Weather]
let clouds: Clouds
let wind: Wind
let visibility: Int
let pop: Double
let sys: Sys
let dtTxt: String
let snow: Snow?
enum CodingKeys: String, CodingKey {
case dt, main, weather, clouds, wind, visibility, pop, sys
case dtTxt = "dt_txt"
case snow
}
}
// MARK:
- MainClass
struct MainClass: Codable {
let temp, feelsLike, tempMin, tempMax: Double
let pressure, seaLevel, grndLevel, humidity: Int
let tempKf: Double
enum CodingKeys: String, CodingKey {
case temp
case feelsLike = "feels_like"
case tempMin = "temp_min"
case tempMax = "temp_max"
case pressure
case seaLevel = "sea_level"
case grndLevel = "grnd_level"let weatherModel = try? JSONDecoder().decode(WeatherModel.self,from: jsonData)
убери опционал, напиши просто trylet list = try List(from: weatherModel as! Decoder)это бессмысленная строка, list уже будет декодирован и будет находится в weatherModel.list
self.degreesLabel.text = String(weatherModel.list.first?.main.temp ?? 0.0)
t
let weatherModel = try? JSONDecoder().decode(WeatherModel.self,from: jsonData)
убери опционал, напиши просто trylet list = try List(from: weatherModel as! Decoder)это бессмысленная строка, list уже будет декодирован и будет находится в weatherModel.list
self.degreesLabel.text = String(weatherModel.list.first?.main.temp ?? 0.0)
t
let weatherModel = try? JSONDecoder().decode(WeatherModel.self,from: jsonData)
убери опционал, напиши просто trylet list = try List(from: weatherModel as! Decoder)это бессмысленная строка, list уже будет декодирован и будет находится в weatherModel.list
self.degreesLabel.text = String(weatherModel.list.first?.main.temp ?? 0.0)
DI
DI
t
Weather: Codable {
let id: Int
let main: MainEnum
let weatherDescription: Description
let icon: String
enum CodingKeys: String, CodingKey {
case id, main
case weatherDescription = "description"
case icon
}
}
enum MainEnum: String, Codable {
case clear = "Clear"
case clouds = "Clouds"
case snow = "Snow"
}
enum Description: String, Codable {
case brokenClouds = "broken clouds"
case clearSky = "clear sky"
case fewClouds = "few clouds"
case lightSnow = "light snow"
case overcastClouds = "overcast clouds"
case scatteredClouds = "scattered clouds"
}
DI
DI
MainEnum: String, Codable {
case clear = "Clear"
case clouds = "Clouds"
case snow = "Snow"s
s
DI
DI