2017-04-19 72 views
1

在我的應用我取從火力地堡數據,當一個節點發生變化:快照從火力地堡數據庫事件返回childChanged iOS上

handle = ref?.child("orders").child("4").observe(.childChanged, with: { (snapshot) in   
    if snapshot.key == "price" { 
     print("price: \(snapshot.value)") 
    } 
    if snapshot.key == "orders" { 
     print("orders: \(snapshot.value)") 
    }         
}, withCancel: nil) 

但上面的函數真正做到這一點的呢?

我試圖建立一個if語句來檢查什麼樣的價值觀正在然後返回抓住從snapshot.value該值,但我很擔心,如果我改變我的一次,我不能從哪個節點snapshot.value是來自告訴所有值。

+0

順便說一句,如果你真的希望'ref'不是零,你應該使用'ref!'來代替;-) –

+0

@PauloMattos感謝您的提示!但在這種情況下,我有一些決定我是否應該打開連接的som邏輯。所以我只打開某些項目的連接:) – Kiow

回答

2

是,跟蹤子節點改變這是做到這一點的方式!

火力地堡文檔中,相應的childChanges數據庫事件,提供進一步的細節:

偵聽更改在列表中的項目。每次修改子節點時都會觸發此事件。這包括對子節點的後代的任何修改。傳遞給事件監聽器的FIRDataSnapshot包含該子代的更新數據。

這樣,snapshot.key識別更新的子節點和snapshot.value相應的數據。