我有以下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
}
产生以下内容:
正如您所看到的,名称是静态的,分数只是单词"得分"。从以下JSON返回 " https://str8red.com/jsonoverallleaderboard/":
[["shanu", "1056"], ["snookro", "828"], ["tingeypa", "709"], ["shaun", "620"], ["chrakers", "506"]]
我想要做的是使用上面JSON中的名称和分数,而不是使用的静态名称和分数。
我已经浏览过stackoverflow并且跟着一些指南没有成功。对此,任何帮助都会受到赞赏,艾伦。
答案 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