【发布时间】:2019-12-22 08:09:35
【问题描述】:
我正在尝试解析 API JSON 并将其显示在 UITableView 中,但问题是我无法访问此 API 中的所有数组。
struct RootResults: Codable {
var results: [results]
}
// MARK: - results
struct results: Codable {
var container_number: String?
var commodities: [commodities]
}
// MARK: - commodities
struct commodities: Codable {
var commodity_name_en: String?
var varieties: [varieties]
}
// MARK: - varieties
struct varieties: Codable {
var variety_name_en: String?
var variety_name_ar: String?
}
import UIKit
class ViewController: UIViewController {
@IBOutlet var resultsTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
abuseedoAPIget()
}
var arrData = [results]()
var arrResults = [commodities]()
func abuseedoAPIget(){
let urlJSON = "http://abuseedotrading.com/apps/api/acp/?key=4ea1e08dd9ab329bbdaa9e5b42939c04&query=list_containers"
guard let url = URL(string: urlJSON) else {return}
URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let data = data else {return}
guard error == nil else {return}
do {
let decoder = JSONDecoder()
let APIResponse = try decoder.decode(RootResults.self, from: data)
self.arrData = APIResponse.results
DispatchQueue.main.async{
self.resultsTable.reloadData()
}
} catch let error {
print("Failed to decode JSON:", error)
}
}.resume()
}
}
extension ViewController: UITableViewDelegate, UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell
let dataa = arrData[indexPath.row]
cell.conLabel.text = dataa.container_number
cell.comLabel.text = dataa.commodity_name_en
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
}
【问题讨论】:
-
在您的日志中提供更多信息。它说什么?你有空指针异常吗?您是否在信息列表中添加了 AppTransportSecurity?
-
RootResults一个或多个属性类型不匹配 -
请添加结构并详细说明 what 到底是什么不起作用。
-
import Foundation // MARK: - RootResults struct RootResults: Codable { var results: [results] } // MARK: - results struct results: Codable { var container_number: String? var 商品:[commodities] } // MARK: - 商品结构商品:可编码 { var 商品名称:字符串? var 品种:[品种] } // MARK:-品种结构品种:可编码{ var品种名称:字符串?变种名称_ar:字符串? }
-
我可以访问结果数组,但我不能访问商品数组