2016-06-20 37 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 
     } 

    }) 

}