gpt4 book ai didi

JSON 提要不会显示在 Tableview 中

转载 作者:行者123 更新时间:2023-11-28 15:10:43 34 4
gpt4 key购买 nike

我在表格 View 中显示数据时遇到问题。我知道我正在获取数据,因为我设置了打印功能,显示数据是另一回事。作为引用,这是来自 API 的 JSON 提要,列在此处 https://api.opendota.com/api/rankings .如果有人有任何建议,我将不胜感激。谢谢。

import UIKit

struct PlayerStatsParent:Decodable{
let rankings: [PlayerStats]
}

//Optional objects are defined using ?
struct PlayerStats:Decodable {
let personaname: String?
let score: Double?
let solo_competitive_rank: Int?
let avatar: String?
}

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var rankTable: UITableView!

var rank = [PlayerStats]()

override func viewDidLoad() {
super.viewDidLoad()

//this is an optional URL, so need to define objects in contains
let jsonUrlString = "https://api.opendota.com/api/rankings"
guard let url = URL(string: jsonUrlString) else {return}
URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let data = data else {return}
//let dataAsString = String(data: data, encoding: .utf8)
//print(dataAsString)

do{
let downloadedRank = try JSONDecoder().decode(PlayerStatsParent.self, from: data)
self.rank = downloadedRank.rankings
DispatchQueue.main.async {
self.rankTable.reloadData()
}
print(downloadedRank.rankings)
} catch let jsonErr {
print("Error jsonErr", jsonErr)
}
}.resume()
}

let jsonUrlString = "https://api.opendota.com/api/rankings"

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return rank.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "rankCell") as? RankTableViewCell else { return UITableViewCell() }
cell.nameLabel.text = rank[indexPath.row].personaname

return cell
}

最佳答案

除非你在 Storyboard中设置了 UITableView 委托(delegate)和数据源,否则你需要在 viewDidLoad 中设置,如下所示:

self.rankTable.delegate = self
self.rankTable.dataSource = self

否则你的tableview无法获取数据。

关于JSON 提要不会显示在 Tableview 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47683172/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com