2016-06-20 34 views
2

你好,我从firebase检索一些信息,我正在寻找的数据是三个孩子深,并包含一个布尔值。当我打印的值能够得到结果,但我无法看到结果是真是假。快速检查,看看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 

      */ 

     } 

    }) 

} 

火力JSON enter image description here

+0

'tags.children'的结构是什么? – Alexander

+0

@AMomchilov请看看编辑我添加了确切的JSON。我通常会在键值为true的情况下进行查询,但是因为关闭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 
     } 

    }) 

}