Табличное представление FirebaseUI аварийно завершает работу с сообщением «Недопустимое обновление: недопустимое количество строк в разделе 0».

У меня есть 3 табличных представления в контроллере вкладок, все они заполняются следующим образом:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.dataSource = self.notesTableView.bind(to: getQuery()) { tableView, indexPath, snap in

        let cell = self.notesTableView.dequeueReusableCell(withIdentifier: "cellident", for: indexPath)
        let customCell = cell as! TextCell
        self.notesTableView.dataSource = self.dataSource
        self.notesTableView.delegate = self

        if let note = snap.childSnapshot(forPath: "note").value as! String? {
            customCell.notesLabel.text = note
        } else {
            customCell.notesLabel.text = "Undefined"
        }

        return cell
    }
}

Когда я запускаю приложение на своем телефоне и переключаюсь между вкладками, через какой-то момент я всегда сталкиваюсь с этим исключением:

«NSInternalInconsistencyException», причина: «Недопустимое обновление: недопустимое количество строк в разделе 0.

Кроме того, консоль показывает это, но я не уверен, как это интерпретировать:

*** Ошибка утверждения в -[UITableView _endCellAnimationsWithContext:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3600.7.47/UITableView.m:1737

Мой вопрос: если у кого-то есть идея, в чем может быть причина этого исключения в отношении FirebaseUI. Я предполагаю, что это связано с заполнением таблиц.


person ffritz    schedule 30.04.2017    source источник
comment
Как выглядит содержимое вашего метода tableView(_:numberOfRowsInSection:)?   -  person Todd Kerpelman    schedule 03.05.2017
comment
@ToddKerpelman У меня нет такого метода. Я думаю, что это должно быть покрыто библиотекой FirebaseUI.   -  person ffritz    schedule 03.05.2017


Ответы (1)


В viewWillDisappear установите self.dataSource = nil.

Чтобы вы не обновляли dataSource неправильно.

из этого вопроса здесь

по моему опыту, самый безопасный способ - в наборе viewWillDisappear self.dataSource.unbind()

person Jacob Kazal    schedule 21.06.2017