0
firebaseに接続して特定のパスに移動してから値を返す関数を作った。私が印刷すると(snapshot.value)、それは私に必要な値を与えます。関数を呼び出すと、userProfileは空です。スナップショット文字列を返すにはuserProfileが必要です。Return Statement SwiftのFirebaseを使用したときのエラー
func getUserData(uid: String) -> String{
var _REF_USERNAME = FIRDatabase.database().reference().child("users").child(uid).child("profile").child("username")
var userProfile = String()
_REF_USERNAME.observe(.value, with: {(snapshot) in
print("SNAP: \(snapshot.value)")
userProfile = snapshot.value as! String
})
print(userProfile)
return userProfile
}
Firebaseからデータが返される前にリターンが実行されています。 Firebaseのデータは、クロージャ内でのみ有効になります。私の答えは[この質問](http://stackoverflow.com/questions/43823808/access-firebase-variable-outside-closure/43832208#43832208)と[this one](http://stackoverflow.com)をご覧ください。/questions/43130730/table-view-is-not-displayed-fire-usernameからfire-base-43157576#43157576)を参照してください。通常、Firebase関数からの戻りデータは非同期であるため、コードの残りの部分は同期している必要があります。 – Jay