私はしばらくの間、この関数によって返された値をviewDidLoadの変数に代入するのに苦労していますが、空の文字列を返しています。 getUid() - firebaseのuidを返しています prRef - ユーザー用のfirebaseテーブルを呼び出していますSwift 3の文字列関数の外に変数を代入する
私は間違っていることを誰かに教えてもらえますか?事前に
おかげで、
var currentWorkplaceId: String?
func getCurrentWorkplaceId() -> String {
//completion:@escaping (Bool)->Void
var workplaceid = String()
prRef.child(getUid())
.child("workplace_id")
.observeSingleEvent(of: .value, with: { snapshot in
workplaceid = snapshot.value as! String
})
return workplaceid
}
用法:
currentWorkplaceId = getCurrentWorkplaceId()
その同期の混合物(observesingleeventは非同期である)、非同期(getCurrentWorkpaceId()同期しています)。そういうものを混ぜ合わせることはできません。 closureがworkplaceidに値を代入する前に* returnステートメントが実行されているため、これは機能しません。 observeSingleEventがその値をgetCurrentWorkplaceId – Gruntcakes