使用Firebase和填充单元格“索引超出范围”

时间:2017-12-08 00:34:51

标签: arrays uitableview firebase dictionary firebase-realtime-database

我正在尝试将字典发布到firebase,其中用户名为密钥,文本为值。我发布的是这样的:

 let dict = ["\(currentUser!)":"\(text)"]
Database.database().reference().child("posts/\(ourID!)/comment").setValue(dict)

我正在尝试做什么,他用.subtitle单元格填充一个tableview,使用帖子的文本和用户值填充它,这样你就可以看到用户的用户名和帖子了。 注意:问题出在我尝试添加评论时。当我读取数据时,这会自动填充tableview。问题是当我单击按钮添加其他评论时。出于某种原因,我不能让数组填充第二篇文章。我有两个数组的原因是因为on是针对用户,而是针对文本。因此,在表视图中,每个单元格都填充了相应的帖子和匹配用户。

以下是我正在阅读的帖子:

let myTopPostsQuery = (Database.database().reference().child("posts").child("\(ourID!)/comment")).queryOrdered(byChild: "comment")

        myTopPostsQuery.observe(DataEventType.childAdded, with: { (snapshot) in

            print(snapshot)
            print("User: \(snapshot.key)")
            if let item = snapshot.value as? String {
                self.comments.append(item)
                print("Comments so far: \(self.comments)")
            }
            if let item2 = snapshot.key as? String {
                self.keyUsers.append(item2)
                print("Our users \(self.keyUsers)")
            }
            self.tableView.reloadData()

        })
 tableView.reloadData()

该帖子已成功进入Firebase数据库,但我在尝试填充tableview单元格时读取用户名时出错。我不知道为什么keyUsers无法正常工作。

cell.textLabel?.text = comments[indexPath.row]
cell.detailTextLabel?.text = keyUsers[indexPath.row]**Thread 1: Fatal error: Index out of range

1 个答案:

答案 0 :(得分:0)

您是否为tableView更新了numberOfRowsInSection中的行数?

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
   return keyUsers.count  //keyUsers should always be updated whenever there is changes in your items
}