2017-03-09 93 views
1

我試圖在按下按鈕時將Firebase DB中條目的值從false更新爲true。我可以用下面的代碼獲得當前快照值:Swift:無法更新Firebase DB值

@IBAction func test(_ sender: Any) { 

ref.child("Sell_Request").queryOrdered(byChild: "name").queryEqual(toValue: requestUsername).observeSingleEvent(of: .value, with: { (snapshot : FIRDataSnapshot) in 

    print(snapshot) 

    }) 
} 

我嘗試使用下面的代碼更新「Request_Made」從虛假到真實的價值,但我得到一個SIGBRT。

@IBAction func test(_ sender: Any) { 


     ref.child("Sell_Request").queryOrdered(byChild: "name").queryEqual(toValue: requestUsername).setValue(true, forKey: "Request_Made"); 

    } 

這裏是我的數據庫條目的外觀在火力點:

enter image description here

回答

1

這將是正確的做法。

ref.child("Sell_Request").queryOrdered(byChild: "name").queryEqual(toValue: requestUsername).observeSingleEvent(.value, with: { dataSnapshot in 
    let enumerator = dataSnapshot.children 
    while let sell_request = enumerator.nextObject() as? FIRDataSnapshot { 
     sell_request.ref.child("Request_Made").setValue(true) 
    } 
}) 
+1

不需要從根重建參考。你可以使用'sell_request.ref.child(「Request_Made」)。setValue(false)' – dstepan

+0

你是對的。謝謝。 –

+0

你們真棒!感謝你們倆!! – user2411290

1

我相信你仍然需要觀察查詢。

@IBAction func test(_ sender: Any) { 

    ref.child("Sell_Request").queryOrdered(byChild: "name").queryEqual(toValue: requestUsername).observeSingleEvent(of: .value, with: { snapshot in 

     for child in snapshot.children {   

      if let item = child as? FIRDataSnapshot { 

       item.ref.setValue(true, forKey: "Request_Made"); 
      } 
     } 
    } 
} 
+0

我希望我能給你兩個最好的答案,因爲這兩個工作。謝謝! – user2411290

+0

沒問題。很高興它對你有效。在未來,如果兩種方法同樣有效,那麼首先發布的問題通常是被選作答案的問題。快樂的編碼! – dstepan