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

Posted

技术标签:

【中文标题】Firebase和填充单元格的“索引超出范围”【英文标题】:"Index out of range" with Firebase and populating cell 【发布时间】:2017-12-08 00:34:50 【问题描述】:

我正在尝试向 firebase 发布一个字典,其中用户名作为键,文本作为值。我是这样发布的:

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

我正在尝试为她做的事情是,他使用 .subtitle 单元格填充表格视图,使用帖子的文本和用户值填充它,这样您就可以看到用户的用户名和他们的帖子。 注意:问题出在我尝试添加评论时。当我读取数据时,这会自动填充表格视图。问题是当我单击一个按钮添加另一个评论时。出于某种原因,我无法让数组填充第二篇文章。我有两个数组的原因是因为 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()

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

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

【问题讨论】:

【参考方案1】:

您是否为 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

【讨论】:

是的,但我仍然无法将字典作为数组发布。它只是不断重写以前的值。

以上是关于Firebase和填充单元格的“索引超出范围”的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:单击特定单元格进行 segue 时索引超出范围

(Swift) 致命错误:索引超出范围

致命错误:索引超出范围的 tableview 有两个部分

Swift Firebase UISearchController 索引超出范围

致命错误:索引超出范围 - Swift 3 和 Firebase

在 UITableView 中嵌入不同数量的项目的 UICollectionViews 索引超出范围