我正在使用 JSONDecoder 通过 API 访问 JSON 数据。在这个 JSON 数据中有几个 [arrays]
。我遇到了访问出现 key 的每个实例的问题。
代码如下:
var details = [Details]()
var production = [Production]()
struct Details: Codable {
let title: String
let poster_path: String?
let id: Int?
let production_companies: [Production]
}
struct Production: Codable {
let name: String
}
let task = session.dataTask(with: request, completionHandler: { (dataOrNil, response, error) in
if let data = dataOrNil {
do { let details = try! JSONDecoder().decode(Details.self, from: data)
let production = details.production_companies
print(production)
}
}
})
这是 print(production)
打印到控制台的内容:
[Film_Bee.DetailsView.Production(name: "Columbia Pictures"), Film_Bee.DetailsView.Production(name: "Marvel Entertainment"), Film_Bee.DetailsView.Production(name: "Sony Pictures")]
我想做的是访问数组中的每个 name
。我知道要访问第一个我可以使用 production.first?.name
但如果我不确定如何访问每个标签以放入单个标签。
最佳答案
Prashant 点了。我只是额外添加了一点可能对您有所帮助。
我相信你知道像 for 或 forEach 这样的快速循环来查看你的字符串列表
production.forEach { model in
print(model.name)
}
对于你的问题,你需要加入你的字符串列表。当您需要更新 UI 时,请使用 DispatchQueue。
let productionList = production.map{$0.name}
let strings = productionList.joined(separator: " ") //use "\n" if you wish new line
print("stringList: \(strings)")
DispatchQueue.main.async() {
yourLabel.text = strings
}
关于ios - JSON访问数组内的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52789479/