Swift 线程1:致命错误:索引超出范围,返回array.count+;1.
我有一个始终只有一个单元格的tableview。如果有数据要从Firebase下载,它会将其放入一个名为posts的数组中。例如,当用户将下载两个“在我的情况下”服务器时,它将只显示一个单元格,而不是两个。我想我可以通过将Swift 线程1:致命错误:索引超出范围,返回array.count+;1.,swift,uitableview,return,tableview,Swift,Uitableview,Return,Tableview,我有一个始终只有一个单元格的tableview。如果有数据要从Firebase下载,它会将其放入一个名为posts的数组中。例如,当用户将下载两个“在我的情况下”服务器时,它将只显示一个单元格,而不是两个。我想我可以通过将return posts.count更改为return posts.count+1来解决这个问题,因为将始终显示一个单元格。但是如果我使用return posts.count+1我会得到一个 线程1:致命错误:索引超出范围 第let post=posts[indexPath.r
return posts.count
更改为return posts.count+1
来解决这个问题,因为将始终显示一个单元格。但是如果我使用return posts.count+1
我会得到一个
线程1:致命错误:索引超出范围
第let post=posts[indexPath.row]
行出错。我已经读到这个错误,但我似乎无法修复它
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if posts.count == 0 {
self.tableView.setEmptyMessage("No Servers uploaded!")
return 1
} else {
self.tableView.restore()
return posts.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "ProfileCell", for: indexPath) as! ProfileCellTableViewCell
cell.delegate = self
return cell
}else {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TableViewCellMYposts
cell.Map_image.image = nil
let post = posts[indexPath.row]
cell.post = post
cell.delegate = self
return cell
}
}
假设您在
posts[0]
中有一些数据,您永远不会实际显示它。对于indexPath.row=0,您将显示一个配置文件单元格,然后开始显示POST[1]和on中的数据。将问题行更改为:
let post=posts[indexPath.row-1]
当firebase请求返回空结果集时,不要与count
属性混合,而是向posts
数组添加一个内容为“No Servers upload!”的条目。这样你就不需要任何黑客的解决方案