如何快速显示tableviewcells中的json数据

时间:2018-07-26 05:42:15

标签: ios swift

  

我想在表格单元格中显示数据   现在我想在屏幕上将数据从api显示到表格单元格视图

此api链接的输出显示在控制台中:

enter image description here

  

这是结构变量

struct Team: Codable{ //here is struct veriables
var api_id: Int
var id: Int
var first_team:Int
var second_team:Int
var date: String  }
  

这是我从api获取数据

guard let url = URL(string: "http://127.0.0.1:8000/api/matches") else {return}  
    let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
        guard let dataResponse = data,
            error == nil else {
                print(error?.localizedDescription ?? "Response Error")
                return }
        do {
            //here dataResponse received from a network request
            let decoder = JSONDecoder()
            let model = try decoder.decode([Team].self, from:
                dataResponse) //Decode JSON Response Data
            print(model)


        } catch let parsingError {
            print("Error", parsingError)
        }
    }
    task.resume()
  

这里要使用数据并显示在屏幕上

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "TeamCell", for: indexPath) as! TeamTableViewCell
    //I want to show here data 
    return cell
}

1 个答案:

答案 0 :(得分:0)

创建用于存储团队的全局变量

var teams = [Team]()

替换

let model = try decoder.decode([Team].self, from:
                dataResponse) //Decode JSON Response Data

使用

teams = try decoder.decode([Team].self, from:
                dataResponse) //Decode JSON Response Data

tableView.reloadData()

然后

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

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "TeamCell", for: 
    indexPath) as! TeamTableViewCell
    if let team = teams[indexPath.row] {
        cell.firstTeamLabel.text = "\(team.first_team)"
        cell.dateLabel.text = team.date
        ...
        // Note: Replace label names with your actual one.
    }
    return cell
}