在TableViewController中呈现嵌套数组

时间:2020-05-24 14:01:51

标签: ios arrays swift uitableview

很抱歉,这只是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"],
...
]

是否可以使用现有的数据结构并将其呈现在表视图的行中?还是我最好重组数据?谢谢。

2 个答案:

答案 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)]

...