2016-10-29 83 views
0

我正在使用Swift和Firebase在iOS中開發一個小型應用程序。我無法查詢數據並檢索值。 我的火力實時數據庫是這樣的:Firebase queryEqualToValue獲取Swift中的密鑰2.3

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

我想提出這個查詢:

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

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

打印鍵值 「postsedation_room」。 在這一點上打印的結果是 Snap (qrcode) <null>你能幫助我,讓我可以打印關鍵給孩子的價值?

+0

@ EICaptainv2.0我將如何去改變我的代碼來解決這個問題,空? –

回答

0

當您針對Firebase數據庫執行查詢時,可能會有多個結果。因此,如果您附加值觀察者,快照將包含這些結果的列表。即使只有一個結果,快照也會包含一個結果列表。

所以在你的觀察者中,你需要處理這個列表。要做到這一點最簡單的方法是遍歷它:

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

謝謝!有效! –