2016-06-20 2 views
2

Hallo Ich bin ein paar Informationen aus Firebase abrufen die Daten, die ich suche sind drei Kind tief und bestehen zu einem boolean. Wenn ich den Wert drucke, kann ich das Ergebnis nicht erhalten, aber ich sehe nicht, ob das Ergebnis wahr oder falsch ist.schnelle Überprüfung, um zu sehen, ob Firebase-Wert wahr oder falsch ist

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 

      */ 

     } 

    }) 

} 

Feuerbasis json enter image description here

+0

Wie ist die Struktur von 'tags.children'? – Alexander

+0

@AMomchilov Bitte schauen Sie sich die Bearbeitung an, ich habe den genauen JSON hinzugefügt. Ich mache in der Regel eine Abfrage, wo Schlüsselwerte = wahr, aber weil ich innerhalb der Schließung Firebase wird mir nicht erlauben, eine Abfrage zu machen. – pprevalon

Antwort

0

Da nach dem Firebase Docs, .children ist. . .

Ein Iterator für Snapshots der untergeordneten Knoten in diesem Snapshot. Sie können die native for..in Syntax verwenden.

. . . dann müssen Sie .value verwenden, um auf ihre Daten zuzugreifen, und .key, um auf ihre Schlüssel zuzugreifen.

Daher könnten Sie so etwas tun.

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 
     } 

    }) 

} 

Oder wenn Sie alle wahren Werte in einem Array speichern möchten.

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 
     } 

    }) 

} 
Verwandte Themen