2017-03-20 4 views
2

返却関数でFirebaseの値に苦労しています。これは私のために進行中の問題であるようです。私は私の問題の基本的な例を書いた。これをどうやって行うのですか?Swift FirebaseファンクションReturn

func getChartIndexValues(completion:@escaping (Double) ->()) { 

    //Firebase Initialization 
    var ref: FIRDatabaseReference! 
    ref = FIRDatabase.database().reference() 

    ref.child("general_room_index").observeSingleEvent(of: .value, with: {(snapshot) in 

     let snapDict = snapshot.value as? NSDictionary 
     var zero = snapDict?["0"] as! Double 

     completion(zero) 
     }) 

} 


    returnFunction() -> (Double) { 

     getChartIndexValues() { (zero) ->() in 

      let testValue = zero 
     } 


    return //THis is my problem 
} 

答えて

1

あなたは問題を暗示していますが、明示的には述べていません。あなたは関数の結果として非同期関数の結果を返すことはできません。関数が終了したときに実行される補完ハンドラを渡す必要があり、そのコードは結果にアクセスできるコードです。

returnFunction() -> (Double) { 

    getChartIndexValues() { (zero) ->() in 

    //Your code to process the results belongs here 
    self.someInstanceVar = zero 
    someLabel.text = "Your result is \(zero)" 
    } 

} 
//You CAN'T put your code to process results here. 
+0

だから私の言うことは、関数内の値を返すブロックをバイパスすることができないということですか?私はそれをラベルに割り当てる必要がありますか、それを割り当てたいのですか? – codechicksrock

関連する問題