我正在从 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 种货币呢?它根本不实用..我怎样才能以更有效的方式做到这一点?
预先感谢您的回答。
最佳答案
不要放 key
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)
关于json - 如何遍历结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53450629/