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 ответов

3 просмотра

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

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

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

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

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Всем привет! Кто нибудь парсил в ручную JSON без библиотек и фреймворков? Есть может ссылки на оптимальный алгоритмы работы с текстом и примеры таких парсеров?
Lem
27
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
Есть сайт. Там была древняя версия эво. Стоял плагин, который каждый коммент в Jot делал отдельной страницей. После обновления все слетело, теперь старница открывается отдельн...
Artem
1
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
А чем вам питонисты не угодили?😂
.
79
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Приветствую всех. Хочу начать изучать код для программирования микроконтроллеров и не пойму с чего начать. То ли с Си, то ли с плюсов. Чем языки вообще различаются. С чего мож...
Андрей
7
Карта сайта