很抱歉,这只是Swift中Tables的基本概念,但我对Swift还是很陌生,并且花了很多时间试图弄清楚这一点。
我有一个名为“ Data”的数组,其结构如下:
var Data = [
["Alex","25","Male","258475"],
["Sean","29","Male","145737"],
["Grace","34","Female","295049"],
...
]
我想在TableViewController中呈现它,以便每个单元格包含名称,年龄,性别和ID。我发现的大多数示例都使用以不同方式构造的数据:
var Data = [
["Alex","Sean","Grace"],
["25","29","34"],
["Male","Male","Female"],
...
]
是否可以使用现有的数据结构并将其呈现在表视图的行中?还是我最好重组数据?谢谢。
答案 0 :(得分:2)
如我所见,有两种方法可以执行此操作。您可以创建一个包含每个人并具有一个人数组的结构。这样的事情。
struct Person {
var name: String
var age: String
var gender: String
var id: String
}
然后将数据存储在数组中
var data = [Person]
然后在表格单元格中,可以设置要显示的每个项目的标签。
或者,您可以通过一种肮脏而肮脏的方式来获取要显示在defualt单元格文本区域中的信息,这是将字符串组合为单个字符串。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: textCellIdentifier, for: indexPath)
var cellText = ""
let row = indexPath.row
for x in data[row]{
cellText = cellText + ", " + x
}
cell.textLabel?.text = cellText
return cell
}
在上面的代码中,我们在数据数组内找到与行号相对应的数组,然后遍历该数组,将所有字符串加在一起得到1个大字符串,然后在表中显示该字符串。
这里是一个教程,它很好地概述了表格视图,这可能会有所帮助。 https://www.codingexplorer.com/getting-started-uitableview-swift/
答案 1 :(得分:1)
嵌套多个数组作为表视图数据源是最糟糕的选择。永远不要使用这些。
通常推荐的选择是自定义结构。
enum Gender {
case male, female
}
struct Person {
let name, id : String
let age : Int
let gender : Gender
}
let people = [Person(name:"Alex", id: "258475", age: 25, gender: .male),
Person(name:"Sean", id: "145737", age: 29, gender: .male),
Person(name:"Grace", id: "295049", age: 34, gender: .female)]
...