我正在尝试将API中的数据显示到UITableView中。我遇到的问题是我没有得到任何传入UITableView的数据。现在,我看到数据源和代理已连接。 我也知道我能够访问API,因为我能够打印到控制台。
没有错误,只是我看不到任何数据。下面是我的代码。
class StandingTableViewController: UITableViewController {
var standing = ""
let SEASON_URL = "https://ergast.com/api/f1"
var champions: [DriverStanding] = []
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.title = standing
fetchJSON(standing: standing)
}
private func fetchJSON(standing: String){
let JsonUrlString = SEASON_URL + "/" + String(standing) + "/driverstandings.json"
print(JsonUrlString)
guard let url = URL(string: JsonUrlString) else { return }
URLSession.shared.dataTask(with: url) { (data, response, err) in
DispatchQueue.main.async {
if let err = err {
print("Failed to get data from url:", err)
return
}
guard let data = data else { return }
do {
let decoder = JSONDecoder()
// Swift 4.1
decoder.keyDecodingStrategy = .convertFromSnakeCase
let firstDriver = try decoder.decode(F1Data.self, from: data)
self.champions = firstDriver.mrData.standingsTable.standingsLists[0].driverStandings
self.tableView.reloadData()
} catch {
print(error)
}
}
}.resume()
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 0
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return champions.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "cellId")
let champion = champions[indexPath.row]
let driverName = "\(champion.driver.givenName!) \(champion.driver.familyName!)"
cell.textLabel?.text = driverName
return cell
}
任何帮助将不胜感激。我检查了“ cellId”是否与我的代码匹配。
答案 0 :(得分:1)
在numberOfSections
中返回1
或删除整个方法,将其作为默认值为 1
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 0
}
然后重复使用单元格,在Interface Builder中设置字幕样式并编写
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath)
答案 1 :(得分:-1)
对此有任何更新吗?是否删除了方法:
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 0
}
工作吗?