如何遍历结构?

时间:2018-11-23 17:08:10

标签: json swift struct

我正在从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种货币怎么办?根本不可行。.我怎样才能更有效地做到这一点?

预先感谢您的回答。

1 个答案:

答案 0 :(得分: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)