我有错误说“线程1:致命错误:索引超出范围”。
cell.titleLabel.text = cellDataArrayPoster[indexPath.row].jobTitlePoster as? String
请注意,我正在使用两个不同的单元格, 作为prototypeCells。而且,它们都有不同的标识符。 这两个阵列都从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
}
}
答案 0 :(得分:1)
您误解了表视图委托方法的概念。最好从documentation阅读更多信息。
我的一般经验法则是始终仅使用1个数组作为表视图的数据源,以避免索引超出范围的情况。
在您的特定情况下,错误说明了所有相关信息-您正在尝试获取超出数组范围的索引号。最简单的解决方法是将两个数组合并为一个,并在对象之间具有某种继承关系,以便它们适合。