2016-06-20 9 views
2

こんにちは私が探しているデータは深い3つの子供で、ブーリアンになっています。私は結果を得ることができる値を印刷しますが、結果が真か偽かを見ることができません。firebaseの値が真か偽であるかを素早くチェック

func userInfo() { 

    let dbRef = FIRDatabase.database().reference() 
    let stRef = FIRStorage.storage().reference() 

    dbRef.child("users/\(userBiD!)").observeEventType(.Value, withBlock: { snapshot in 

     let name = snapshot.value!["firstname"] as! String 
     let profileImage = snapshot.value!["profilePic"] as! String 
     let receivePostRequest = snapshot.value?["receivePostRequest"] 

     self.nameLabel.text = name 
     self.dbUserProfilePic(self.profilePhotoImageView, imageLink: profileImage) 

     let receivePost = snapshot.childSnapshotForPath("receivePostRequest") 

     let tags = receivePost.childSnapshotForPath("tags") 

     for child in tags.children { 

      /* 
      ... 
      tags{ 
       tag1 = true 
       tag2 = false 

      } 
      //I need to print all keys that have a true value 

      */ 

     } 

    }) 

} 

firebase JSON

enter image description here
+0

'tags.children'の構造は何ですか? – Alexander

+0

@AMomchilov私は正確なjsonを追加した編集を見てください。私は通常、キー値=真であるが、closure firebase内のimは私がクエリを作成することを許可しないため、クエリを作成します。 – pprevalon

答えて

0

ので、Firebase Docsによれば、 .childrenれます。 。 。

のスナップショットこのスナップショット内の子ノードのイテレータ。ネイティブのfor..in構文を使用できます。

。 。 。そのデータにアクセスするには.valueを使用し、そのキーにアクセスするには.keyを使用する必要があります。

したがって、このようなことを行うことができます。

func userInfo() { 

    let dbRef = FIRDatabase.database().reference() 
    let stRef = FIRStorage.storage().reference() 

    dbRef.child("users/\(userBiD!)").observeEventType(.Value, withBlock: { snapshot in 

     let name = snapshot.value!["firstname"] as! String 
     let profileImage = snapshot.value!["profilePic"] as! String 
     let receivePostRequest = snapshot.value?["receivePostRequest"] 

     self.nameLabel.text = name 
     self.dbUserProfilePic(self.profilePhotoImageView, imageLink: profileImage) 

     let receivePost = snapshot.childSnapshotForPath("receivePostRequest") 

     let tags = receivePost.childSnapshotForPath("tags") 

     for child in tags.children { 
      // NEW 
      if child.value == true { 
       print(child.key) 
      } 
      // NEW 
     } 

    }) 

} 

または、すべての真の値を配列に保存する場合は、

func userInfo() { 

    let dbRef = FIRDatabase.database().reference() 
    let stRef = FIRStorage.storage().reference() 

    dbRef.child("users/\(userBiD!)").observeEventType(.Value, withBlock: { snapshot in 

     let name = snapshot.value!["firstname"] as! String 
     let profileImage = snapshot.value!["profilePic"] as! String 
     let receivePostRequest = snapshot.value?["receivePostRequest"] 

     self.nameLabel.text = name 
     self.dbUserProfilePic(self.profilePhotoImageView, imageLink: profileImage) 

     let receivePost = snapshot.childSnapshotForPath("receivePostRequest") 

     let tags = receivePost.childSnapshotForPath("tags") 

     for child in tags.children { 
      // NEW 
      var trueValues: [Bool] = [] 

      if child.value == true { 
       trueValues.append(child.key) 
      } 
      // NEW 
     } 

    }) 

} 
関連する問題