Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 线程1:致命错误:索引超出范围,返回array.count+;1._Swift_Uitableview_Return_Tableview - Fatal编程技术网

Swift 线程1:致命错误:索引超出范围,返回array.count+;1.

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

我有一个始终只有一个单元格的tableview。如果有数据要从Firebase下载,它会将其放入一个名为posts的数组中。例如,当用户将下载两个“在我的情况下”服务器时,它将只显示一个单元格,而不是两个。我想我可以通过将
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!”的条目。这样你就不需要任何黑客的解决方案