从viewdidload

时间:2016-11-10 16:28:06

标签: ios uitableview firebase firebase-realtime-database swift3

我有一个带有tableview的uiviewcontroller。我试图通过我的firebase数据库中的用户进行查询,但我不断收到此错误:

  

'NSInternalInconsistencyException',原因:'尝试将第1行插入第0部分,但更新后第0部分只有0行'

我查了一下并尝试了beginUpdates和endUpdates方法,但在我称之为endUpdates的行上得到了相同的错误。任何想法为什么会这样?

继承我的代码:

searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.definesPresentationContext = true
definesPresentationContext = true
self.browseTable.tableHeaderView = searchController.searchBar



    ref.child("users").queryOrdered(byChild: "name").observe(.childAdded, with: { (snapshot) in

        self.usersArray.append(snapshot.value as? NSDictionary)

        //insert rows
        //self.browseTable.beginUpdates()

        //where the error occurs
        self.browseTable.insertRows(at: [IndexPath(row:self.usersArray.count - 1,section: 0)], with: .automatic)

        //self.browseTable.endUpdates()


}) { (error) in
    print("ERROR: \(error.localizedDescription)")

}

1 个答案:

答案 0 :(得分:1)

正如有关该问题的注释中所讨论的,崩溃是由于函数func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int中返回的值与插入行后的行数不匹配而导致的。

在这种情况下,numberOfRowsInSection函数中返回的值基于dataSource对象,在插入/删除行之前更新dataSource对象将解决问题。

随意建议编辑:)