2017-03-09 4 views
1

ボタンを押すとFirebase DB内のエントリの値をfalseからtrueに更新しようとしています。私は、次のコードで現在のスナップショットの値を取得することができます:私はfalseからtrueに「Request_Made」の値を更新するには、次のコードを使用しようとしていますが、SIGBRTを取得しています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) 

    }) 
} 

。ここで

@IBAction func test(_ sender: Any) { 


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

    } 

は私のDBエントリがFireBaseでどのように見えるかです:

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

私はあなたがまだクエリを観察する必要があると考えています。

+0

私はあなたに両方の仕事の両方が良い答えを与えることができたらいいと思います。ありがとうございました! – user2411290

+0

問題ありません。うれしいことはあなたのために働いた。将来、両方の方法が同じように機能する場合は、最初に投稿された質問が、通常、回答として選択される問題です。ハッピーコーディング! – dstepan

関連する問題