Невозможно перебрать массив внутри массива словарей - PullRequest
0 голосов
/ 14 июля 2020
• 1000

После получения ответа я делаю следующее:

let dict = try! JSONSerialization.jsonObject(data: responseData!, options: .allowFragments) as? [[String:Any]] ?? [[String:Any]]()

В результате получается следующий словарь ( Прошу прощения за картинку, но я не смог сделать снимок экрана. Плюс эти 44 элемента составляют общее количество Places, но я упростил строку ответа, как я сказал выше )

Моя проблема в том, что я не могу получить доступ к каждому словарю Place. Я пробовал повторять dict["Places"], но это, похоже, не работает, чего я не понимаю, учитывая, что это NSArray.

Мне может не хватать чего-то простого, но я не могу показаться разобраться.

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

Спасибо!

1 Ответ

1 голос
/ 14 июля 2020

Можете попробовать

// MARK: - Root
struct Root: Codable {
    let co2: Int
    let places: [Place]
    let direction: String

    enum CodingKeys: String, CodingKey {
        case co2 = "CO2"
        case places = "Places"
        case direction = "Direction"
    }
}

// MARK: - Place
struct Place: Codable {
    let name, code: String
    let type: Int
    let coordX, coordY: Double
    let provider: String
    let lines: String?

    enum CodingKeys: String, CodingKey {
        case name = "Name"
        case code = "Code"
        case type = "Type"
        case coordX = "CoordX"
        case coordY = "CoordY"
        case provider = "Provider"
        case lines = "Lines"
    }
}
let res = try JSONDecoder().decode([Root].self,from:data)
print(res.places)
...