2017-06-19 121 views
0

我有五種觀察方法,它們從Firebase獲取五個不同的INT值。所有的腳本實際上都在工作。如果我打印快照,控制檯會顯示五個不同的值。在五種觀察方法之外,我有一個連接到條形圖的數組。我想取第一個值並將其附加到數組的[0]中,依此類推。 這是我的代碼:Firebase觀察並獲取數組的值

let myArray = [1, 2, 3, 4, 5] 

    var exampleString = (label.text?.lowercased())! 
    ref2 = FIRDatabase.database().reference() 
    ref2.child("parole_chiave").child(exampleString).child(exampleString).child("valore1").observe(.value, with: { snapshot in 

     print(snapshot.value!) 

    }) 
    ref2.child("parole_chiave").child(exampleString).child(exampleString).child("valore2").observe(.value, with: { snapshot in 

     print(snapshot.value!) 

    }) 
    ref2.child("parole_chiave").child(exampleString).child(exampleString).child("valore3").observe(.value, with: { snapshot in 

     print(snapshot.value!) 

    }) 
    ref2.child("parole_chiave").child(exampleString).child(exampleString).child("valore4").observe(.value, with: { snapshot in 

     print(snapshot.value!) 

    }) 
    ref2.child("parole_chiave").child(exampleString).child(exampleString).child("valore5").observe(.value, with: { snapshot in 

     print(snapshot.value!) 

    }) 

回答

1

一種可能的方式來實現你的目標是窩在彼此內部觀察,這將迫使第一觀察完成,並填充陣列,第二觀察發生之前。

ref2.child("parole_chiave").child(exampleString).child(exampleString).child("valore1").observe(.value, with: { snapshot in 

myArray.append(snapshot.value) as! Int 
ref2.child("parole_chiave").child(exampleString).child(exampleString).child("valore2").observe(.value, with: { snapshot2 in 

    myArray.append(snapshot2.value) as! Int 
    ref2.child("parole_chiave").child(exampleString).child(exampleString).child("valore3").observe(.value, with: { snapshot3 in 

     myArray.append(snapshot3.value) as! Int 
     ref2.child("parole_chiave").child(exampleString).child(exampleString).child("valore4").observe(.value, with: { snapshot4 in 

      myArray.append(snapshot4.value) as! Int 
      ref2.child("parole_chiave").child(exampleString).child(exampleString).child("valore5").observe(.value, with: { snapshot5 in 

       myArray.append(snapshot5.value) as! Int 

      }) 

     }) 

    }) 

}) 

請注意,您將不得不更改每個快照的名稱,因爲它們現在處於相同的方法中。