2016-10-01 28 views
2

トピックとカテゴリを持つアプリがあります.1つのカテゴリが1つ以上のトピックに属する場合があります。特定のトピックを持つカテゴリのみを表示するようにデータをフィルタリングしようとしていますidはtrueとしてマークされ、これは構造体である:FirebaseとSwiftで1対多のクエリを実行する3

self.ref = FIRDatabase.database().reference(fromURL: FIREBASE_URL).child("categories") 
let query = ref?.queryOrdered(byChild: "topics/idt2").queryEqual(toValue: true) 
query!.observe(.value, with: { (snapshot) in 
    //This should bring back both categories, Soccer and Moon 

    print("Inside query \(snapshot.value)") // Prints null 

}) 

任意のアイデア: enter image description here Categories with references to the topics ID.

ここで(スウィフト2.3に取り組んでいた)私が思い付くのコードはありますか?

+0

Fox次の質問:あなたの質問にJSONツリーの画像が含まれています。 Firebaseデータベースコンソールの[エクスポート]ボタンをクリックすると、実際のJSONをテキストとして置き換えてください。 JSONをテキストとして検索可能にすることで、実際のデータを使ってテストしたり、答えに使用したりすることができます。一般的には、これは良いことです。 –

答えて

3

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

あなたは、コールバックのブロックでは、このリストを処理する必要があります。

query!.observe(.value, with: { (snapshot) in 
    for child in snapshot.children { 
     print(child.key) 
    } 
}) 

も参照してください。

+1

もう一度お手伝いをしてくれてありがとう、ちょっとしたことですが、このコードはSwift 3.0では動作しません。私が間違っていれば正解ですが、今はスナップショットの値を使用して、まずNSDictionaryまたはNSArrayに変換します。このように:http://pastebin.com/f7q8kbvJ –

関連する問題