1
一切正常,直到用戶註銷並再次登錄。似乎Firebase觀察方法被稱爲兩次。我試圖在viewDidDisssaper
中使用removeAllObservers
,並用句柄移除Observer,但它沒有幫助。我仍然得到重複的數據。我還能嘗試什麼?也許我的查詢是錯誤的?但隨後它會顯示錯誤的結果在一開始..用戶再次登錄後重複數組中的數據Firebase觀察方法
這裏是我使用的是什麼:
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似乎有一個類似的問題,你http://stackoverflow.com/questions/40699325/firebase-observer-code-running-twice-after-leaving-查看 就像我在那裏發表評論,我不知道這是否可以幫助你,但我遭受了這種重複,而且因爲'.value'。有了一個聽衆,它在開始時被調用,然後每次我添加一些數據,再次... – Anfuca
嗯,我需要那個.value,因爲我正在觀察對話中的最後一條消息。 –
如果您只想檢索添加的每個新請求的數據,請嘗試'child_added'而不是'value'。 – Anfuca