firebase 删除值导致 tableview 重新加载元素的两倍

Posted

技术标签:

【中文标题】firebase 删除值导致 tableview 重新加载元素的两倍【英文标题】:firebase remove value causes tableview to reload with double the elements 【发布时间】:2017-09-05 03:28:43 【问题描述】:

我的应用上有一个简单的通知页面,我在应用中设置了好友请求,当收到好友请求或消息的通知时,它会添加到接收者消息页面。当用户选择拒绝好友请求时,警报视图会关闭,但随后表格视图会重新加载双倍的项目,对于接受也是如此。单击接受或拒绝后,我没有调用函数来重新加载它。我已经尝试了一切,希望能得到一些帮助。这是正在发生的事情的一些代码和照片。请注意,我在 viewdidload 中调用了用于获取通知的 pull() 函数,并且没有调用 viewwillappear 函数的 viewdidappear。 pull 函数是一个基本的 firebase 循环获取,将其放入通知数组。

当前代码:检查是否是好友请求,取消segue消息并显示警报视图

    override func shouldPerformSegue(withIdentifier identifier: String,   sender: Any?) -> Bool 
    if identifier == "segueNotify" 
        let index = tableViewNotifications.indexPathForSelectedRow!
        if let friendReques = notifications[index.row].friendRequest 
   let decline = UIAlertAction(title: "Decline", style: .default, handler:  (action : UIAlertAction!) -> Void in
                if let myuid = self.uid 
                    if let key = self.notifications[index.row].key 
                        let ref = FIRDatabase.database().reference()                       

   ref.child("users").child(myuid).child("Notifications").child(key).removeValue()

                    
                
   // this does not work, does the same thing :
   // self.notifications.removeAll()
             //self.tableViewNotifications.reloadData()
               //self.pull()
            )

            let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
            alert.addAction(cancel)
            alert.addAction(accept)
            alert.addAction(decline)
            self.present(alert, animated: true, completion: nil)
            return false
        
    
    return true

只需点击汤米的消息

点击接受/拒绝后

【问题讨论】:

【参考方案1】:

我在接受和拒绝功能之后添加了这个:

self.notifications.removeAll()

self.tableViewNotifications.reloadData()

【讨论】:

以上是关于firebase 删除值导致 tableview 重新加载元素的两倍的主要内容,如果未能解决你的问题,请参考以下文章

Firebase + Swift 删除 TableView 中的行

如何在 Firebase 中删除 tableview 项目后删除它们

删除 tableView 单元格并从 firebase 中删除数据

Firebase + Swift:无法删除 tableView 中的行

从 Firebase 存储中删除 tableview 图像

试图快速删除从firebase检索到的数组中的重复值