Swift 3:JSON进入tableview挑战

时间:2017-07-07 12:27:46

标签: json xcode swift3

我有以下swift3代码:

    var tempNames = ["Alan","Dan","Mark","Jack","Kelly","Andrew","Paul"]

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "LabelCell", for: indexPath)

    let tempName = tempNames[indexPath.row]
    cell.textLabel?.text = tempName
    cell.detailTextLabel?.text = "Score"

    return cell
}

产生以下内容:

enter image description here

正如您所看到的,名称是静态的,分数只是单词"得分"。从以下JSON返回 " https://str8red.com/jsonoverallleaderboard/":

[["shanu", "1056"], ["snookro", "828"], ["tingeypa", "709"], ["shaun", "620"], ["chrakers", "506"]] 

我想要做的是使用上面JSON中的名称和分数,而不是使用的静态名称和分数。

我已经浏览过stackoverflow并且跟着一些指南没有成功。对此,任何帮助都会受到赞赏,艾伦。

1 个答案:

答案 0 :(得分:1)

  • 创建结构

    struct Player {
        let name : String
        var score : String
    }
    
  • 在视图控制器中创建数据源数组

    var players = [Player]()
    
  • 在解析了问题中具有数组的JSON之后(假设它在类型jsonPlayers的变量[[String]]中)将数组映射到结构

    players = jsonPlayers.map { Player(name: $0[0], score: $0[1]) }
    
  • numberOfRows返回

    return players.count
    
  • cellForRow中将值分配给标签

    let player = players[indexPath.row]
    cell.textLabel?.text = player.name
    cell.detailTextLabel?.text = player.score