Я получаю данные из 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 валют? это было бы совершенно непрактично ... как я могу сделать это более эффективным способом?
Заранее благодарю за ответы.

Вместо этого не кладите ключи
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)