Как перебирать структуры?

Я получаю данные из CoinDesk API, чтобы узнать курс биткойнов по отношению к другим валютам, я создал 3 структуры для сохранения этих данных, но невозможно выполнить цикл через структуру, чтобы узнать, сколько элементов у меня там ...

это моя структура:

struct Response: Codable {
    var bpi: currencies
}

struct currencies: Codable {
    var USD: info
    var GBP: info
    var EUR: info
}

struct info: Codable {
    var code: String
    var symbol: String
    var description: String
    var rate_float: Float
}

Чтобы сохранить данные из API, я просто использую:

let jsonData = try JSONDecoder().decode(Response.self, from: data)

Он сохраняет данные без ошибок, но когда я пытаюсь перебрать эти данные для заполнения tableViewCells, это не работает.

то, что я делаю, знаю ...

let euro = jsonData.bpi.EUR
let dollar = jsonData.bpi.USD
let gbp = jsonData.bpi.GBP

let infos = [euro,dollar,gbp]

completion(infos)

Это отправляет данные на мой UITableView и заполняет их, но что, если бы у меня было 500 валют? это было бы совершенно непрактично ... как я могу сделать это более эффективным способом?

Заранее благодарю за ответы.

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
180
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо этого не кладите ключи

struct Response: Codable {
  let bpi: [String:Info]
}

struct Info: Codable {
  let code: String
  let symbol: String
  let description: String
  let rate_float: Float
}

потом

let jsonData = try JSONDecoder().decode(Response.self, from: data)
print(jsonData.bpi["USD"])

так что для всех ключей

let keys = Array(jsonData.bpi.keys)
let values = Array(jsonData.bpi.values)

Другие вопросы по теме