2016-11-16 47 views
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() 
       }) 
      } 
     }) 
     } 
+0

@Hibernia似乎有一個類似的問題,你http://stackoverflow.com/questions/40699325/firebase-observer-code-running-twice-after-leaving-查看 就像我在那裏發表評論,我不知道這是否可以幫助你,但我遭受了這種重複,而且因爲'.value'。有了一個聽衆,它在開始時被調用,然後每次我添加一些數據,再次... – Anfuca

+0

嗯,我需要那個.value,因爲我正在觀察對話中的最後一條消息。 –

+0

如果您只想檢索添加的每個新請求的數據,請嘗試'child_added'而不是'value'。 – Anfuca

回答

0

找不到任何相關的答案。所以我只是檢查陣列的重複和刪除任何重複

相關問題