Поток 1: фатальная ошибка: индекс выходит за пределы диапазона, возвращает array.count + 1 - PullRequest
0 голосов
/ 13 июня 2019

У меня всегда есть таблица с одной ячейкой. Если есть данные для загрузки из 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
        }
    }

1 Ответ

0 голосов
/ 13 июня 2019

Предполагая, что у вас есть какой-то фрагмент данных в posts[0], вы фактически никогда не отображаете его. Для indexPath.row = 0 вы отображаете ячейку профиля, а затем начинаете отображать данные из записей [1] и далее. Измените свою проблемную строку на: let post = posts[indexPath.row - 1]

...