Database 用户再次登录Firebase后在数组中复制数据观察方法

Database 用户再次登录Firebase后在数组中复制数据观察方法,database,duplicates,firebase-realtime-database,observers,Database,Duplicates,Firebase Realtime Database,Observers,在用户注销并再次登录之前,一切正常。似乎Firebase观察方法调用了两次。我试图在viewdissaper中removeallobserver并用handle移除observer,但没有任何帮助。我仍然得到重复的数据。我还能试什么?也许我的疑问是错的?但这样一来,一开始就会出现错误的结果 以下是我正在使用的: let ref = FIRDatabase.database().reference().child("Recent") func observeRecent() {

在用户注销并再次登录之前,一切正常。似乎Firebase观察方法调用了两次。我试图在
viewdissaper
removeallobserver
并用handle移除observer,但没有任何帮助。我仍然得到重复的数据。我还能试什么?也许我的疑问是错的?但这样一来,一开始就会出现错误的结果

以下是我正在使用的:

let ref = FIRDatabase.database().reference().child("Recent")

func observeRecent() {
        ref.queryOrdered(byChild: "sender_id").queryEqual(toValue: senderId()).observe(.value, with: { snapshot in

            Chats_VC.activeConversations.removeAll()
            for snap in snapshot.value as? [String: AnyObject] ?? [:] {
                let data = FIRDatabase.database().reference().child("Recent").child(snap.key)
                data.observeSingleEvent(of: .value, with: { snapshot in
                    let dict = snapshot.value as? [String: AnyObject] ?? [:]
                    let activeSnapshot = Recent()
                    //....
                    Chats_VC.activeConversations.append(activeSnapshot)
                    self.tableView.reloadData()
                })
            }
        })
      }

找不到任何相对的答案。所以我只是检查数组中是否有重复项并删除所有重复项

找不到任何相对的答案。所以我只是检查数组是否存在重复并删除任何重复项

@Hibernia似乎也有类似的问题,就像我在这里评论的那样,我不知道这是否能帮助您,但我遭受了重复,这是因为
.value
。对于侦听器,它在开始时被调用,然后每次我添加一些数据时,我都需要这个.value,因为我正在观察对话中的最后一条消息。如果您只想检索添加的每个新请求的数据,尝试添加
child\u
而不是
value
。更具体地说,我不创建新的child来观察.childAdded的数据。我只更改值。好的。。。你试过
.childChanged
?@Hibernia似乎也有类似的问题,就像我在那里评论的那样,我不知道这是否能帮助你,但我遭受了重复,这是因为
.value
。对于侦听器,它在开始时被调用,然后每次我添加一些数据时,我都需要这个.value,因为我正在观察对话中的最后一条消息。如果您只想检索添加的每个新请求的数据,尝试添加
child\u
而不是
value
。更具体地说,我不创建新的child来观察.childAdded的数据。我只更改值。好的。。。您是否尝试过
.childChanged