2016-10-29 8 views
0

私は、SwiftとFirebaseを使用してiOSで小さなアプリケーションを開発しています。私はデータのクエリと値の取得に問題があります。 マイfirebaseリアルタイムデータベースが、これは次のとおりです。Firebase queryEqualToValue Swift 2.3のキー取得

let query = rootRef.child("qrcode").queryEqualToValue("http://bing.com") 

query.observeSingleEventOfType(.Value, withBlock: { snapshot in 
    print(snapshot) 
}) 

印刷キー値 "postsedation_room":

"qrcode" : { 
    "postsedation_room" : "http://bing.com", 
    "preprocedure_room" : "http://google.com", 
    "presedation_room" : "http://en.m.wikipedia.org" 
} 

私はこのクエリを作成したいと思います。 この時点で、印刷の結果は Snap (qrcode) <null>ですので、私は子供の値を指定してキーを印刷できますか?

+0

@ EICaptainv2.0私はこのヌル問題を解決するために自分のコードを変更することについては行くだろうか? –

答えて

0

Firebaseデータベースに対してクエリを実行すると、複数の結果が表示される可能性があります。したがって、値オブザーバを接続すると、スナップショットにはそれらの結果のリストが含まれます。結果が1つだけの場合でも、スナップショットには1つの結果のリストが含まれます。

あなたのオブザーバーでは、そのリストを処理する必要があります。それを行うための最も簡単な方法は、それを反復することです:

let query = rootRef.child("qrcode").queryOrderedByValue().queryEqualToValue("http://bing.com") 

query.observeSingleEventOfType(.Value, withBlock: { snapshot in 
    for child in snapshot.children { 
     print(child.key) 
    } 
}) 

はまた、あなたが単一childAdded eventL

を観察することができ
let query = rootRef.child("qrcode").queryEqualToValue("http://bing.com") 

query.observeSingleEventOfType(.ChildAdded, withBlock: { snapshot in 
    print(snapshot.key) 
}) 
+0

私は両方の方法を試しましたが、どちらの場合もnullを返しました...他に提案はありますか? –

+0

ありがとう!出来た! –

関連する問題