Swift 线程1:致命错误:索引超出tableViewCell的范围

Swift 线程1:致命错误:索引超出tableViewCell的范围,swift,uitableview,Swift,Uitableview,我的错误是“线程1:致命错误:索引超出范围”。 在 请注意,我使用的是两个不同的单元格, 作为原型细胞。此外,它们都有不同的标识符。 两个阵列都从firebase获取数据 var cellDataArray = [cellData]() var cellDataArrayPoster = [cellDataPoster]() override func tableView(_ tableView: UITableView, numberOfRowsInSection section: In

我的错误是“线程1:致命错误:索引超出范围”。 在

请注意,我使用的是两个不同的单元格, 作为原型细胞。此外,它们都有不同的标识符。 两个阵列都从firebase获取数据

var cellDataArray = [cellData]()
var cellDataArrayPoster = [cellDataPoster]()


 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

   return cellDataArray.count + cellDataArrayPoster.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let index = indexPath.row

    if index == 0 {

        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! infoCell

        cell.titleLabel.text = cellDataArray[indexPath.row].jobTitle as? String
        cell.companyLabel.text = cellDataArray[indexPath.row].companyName
        //cell.timeStampLabel.text = cellDataArray[indexPath.row].createdAt.calenderTimeSinceNow()

        return cell

    } else  {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cellPoster", for: indexPath) as! infoCellPoster
        cell.titleLabel.text = cellDataArrayPoster[indexPath.row].jobTitlePoster as? String
        //cell.timeStampLabel.text = cellDataArray[indexPath.row].createdAt.calenderTimeSinceNow()
        return cell
    }


}

您误解了表视图委托方法的概念。多读一些书是很好的

我的一般经验法则是始终仅使用1个数组作为表视图的数据源,以避免索引超出范围的情况


在您的特定情况下,错误说明了这一切—您正在尝试达到超出数组范围的索引号。最简单的解决方法是将两个数组组合在一个数组中,并在对象之间进行某种继承,以便它们能够适合。

您误解了表视图委托方法的概念。多读一些书是很好的

我的一般经验法则是始终仅使用1个数组作为表视图的数据源,以避免索引超出范围的情况


在您的特定情况下,错误说明了这一切—您正在尝试达到超出数组范围的索引号。最简单的解决方法是将两个阵列组合在一起,并且在对象之间具有某种类型的继承性,以便它们能够适合。

使用两个不同的部分会简单得多-两个数据数组和单元格类型各一个。使用两个不同的部分会简单得多-两个数据数组和单元格类型各一个。谢谢,我只是将两个数组中的数据合并到一个数组中。现在它工作得很好!:)谢谢我只是将两个数组中的数据合并到一个数组中。现在它工作得很好!:)
var cellDataArray = [cellData]()
var cellDataArrayPoster = [cellDataPoster]()


 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

   return cellDataArray.count + cellDataArrayPoster.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let index = indexPath.row

    if index == 0 {

        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! infoCell

        cell.titleLabel.text = cellDataArray[indexPath.row].jobTitle as? String
        cell.companyLabel.text = cellDataArray[indexPath.row].companyName
        //cell.timeStampLabel.text = cellDataArray[indexPath.row].createdAt.calenderTimeSinceNow()

        return cell

    } else  {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cellPoster", for: indexPath) as! infoCellPoster
        cell.titleLabel.text = cellDataArrayPoster[indexPath.row].jobTitlePoster as? String
        //cell.timeStampLabel.text = cellDataArray[indexPath.row].createdAt.calenderTimeSinceNow()
        return cell
    }


}