难以在 swift 中为表视图附加数组

Difficulty appending array of arrays in swift for tableview

我正在尝试根据我拥有的一些数据构建一个表格视图,但我遇到了一些 附加我不理解的行为。

为了调试,我正在尝试这个,如果我说:

var sectionHeaders:[String] = ["0","1"]
var items:[[String]] = [["zero","zero","zero"],["one","one","one"]]

并在我的表格视图中显示它,我看到一个 header“0”,其中三行为零,另一个 header“1” 三排“一”。这是可以预料的。 但是,如果我尝试使用追加构建相同的结构,我会得到奇怪的结果:

var sectionHeaders:[String] = []
var items:[[String]] = [[]]
var tempItems:[String] = []

sectionHeaders.append("0")

        tempItems.append("zero")
        tempItems.append("zero")
        tempItems.append("zero")

        items.append(tempItems)

        tempItems = []

        sectionHeaders.append("1")

        tempItems.append("one")
        tempItems.append("one")
        tempItems.append("one")

        items.append(tempItems)

有了这个,我得到了一个 header 的“0”部分,其中包含零行(无行),以及一个 header 的“1”部分,其中包含三行零。

数据好像有点偏移

我追加的方式有问题吗?

我的数据源委托非常简单:

    override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        
        return sectionHeaders[section]
    }
    
    
    override func numberOfSections(in tableView: UITableView) -> Int {
        
        return sectionHeaders.count
    }


    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return items[section].count
    }

    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCell(withIdentifier: "testCell", for: indexPath)
        
        let text = items[indexPath.section][indexPath.row]
        
        cell.textLabel?.text = text
        
        return cell
    }

   
}

当你这样做时:

var items:[[String]] = [[]]

您将 items 定义为具有一个元素的数组(外括号组),该元素是一个空数组:[](内括号组)。

为了不获取偏移量,应该是这样的:

var items:[[String]] = []

(只是一个空数组)