172 похожих чатов

Здравcтвуйте ещё раз подскажите почему выходит у weatherModel nil? func

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")
}

}
}
}



Мои модели
struct 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"
case humidity
case tempKf = "temp_kf"
}
}

4 ответов

8 просмотров

потому что модель не имеет отношения к тому, что там приходит

let weatherModel = try? JSONDecoder().decode(WeatherModel.self,from: jsonData) убери опционал, напиши просто try в блоке catch выводи ошибку чтобы понимать что распарсить не может, вместо print("Error") напиши print(error) убери let list = try List(from: weatherModel as! Decoder) это бессмысленная строка, list уже будет декодирован и будет находится в weatherModel.list присваивать уже надо будет (взял первый элемент массива) self.degreesLabel.text = String(weatherModel.list.first?.main.temp ?? 0.0)

Timur-Israilov Автор вопроса
Dmitry Iv.
let weatherModel = try? JSONDecoder().decode(Weath...

Вот что выходит dataCorrupted(Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "list", intValue: nil), _JSONKey(stringValue: "Index 1", intValue: 1), CodingKeys(stringValue: "weather", intValue: nil), _JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "main", intValue: nil)], debugDescription: "Cannot initialize MainEnum from invalid String value Rain", underlyingError: nil))

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта