2016-06-20 2 views
2

안녕하세요, firebase에서 정보를 가져오고 있습니다. 찾고있는 데이터가 세 자녀이며, 부울로 구성되어 있습니다. 값을 인쇄하면 결과를 얻을 수 있지만 그 결과가 참인지 거짓인지는 알 수 없습니다.신속하게 firebase 값이 true인지 false인지 확인하십시오.

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 Firebase Docs에 따라 이후 enter image description here

+0

'tags.children'의 구조는 무엇입니까? – Alexander

+0

@AMomchilov 정확한 json을 추가 한 편집을보십시오. 나는 보통 key values ​​= true이지만 closure firebase 내부의 메신저가 질의를 할 수 없기 때문에 질의를한다. – pprevalon

답변

0

, .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 
     } 

    }) 

} 
관련 문제