ネストされた関数の内部から関数の値を返そうとしています。私はなぜそれが動作しないのか理解していますが、私はちょうど私の問題のタイプの回避策を知る必要があります。ネストした関数の関数の戻り値(Swift 3 | Xcode)
私のコードでは、Firebaseデータベース内に人が既に作成されているかどうかを確認しています。したがって、usersRef関数の内部で、firebaseからの戻り値が "nil"であれば、ユーザは作成されておらず、その逆も同様です。
私が言う:return userBool
それは私にこのエラーを与えている:
Unexpected non-void return value in void function
はきれいな回避策を探していますが、私は考えることができる唯一のことは、それぞれのために何度も何度もこの関数を作成する必要がされます私はそれをチェックしたい様々な時間。明らかに、私はむしろそれをやっていません。だから、もしこれを修正し、きれいな解決策を得る方法についていくつか提案して私を助けてくれたら、教えてください! :)
func checkIfUserExists(userID : String) -> Bool {
var userBool = Bool()
var usersRef = FIRDatabase.database().reference()
usersRef.child("users").child(userID).observeSingleEvent(of: .value, with: {
snapshot in
if snapshot.value != nil {
userBool = true
return userBool
}
else {
userBool = false
return userBool
}
})
}
UPDATE:あなたの提案に
おかげで、私が完了したことを追加し、それは完全に働きました。 :)
func checkIfUserExists(userID : String, completion: @escaping (_ success: Bool) ->()){
var userBool = Bool()
var usersRef = FIRDatabase.database().reference()
usersRef.child("users").child(userID).observeSingleEvent(of: .value, with:{
snapshot in
if snapshot.value != nil {
print("userBool!", userBool)
userBool = true
}
else {
print("userBool2!", userBool)
userBool = false
}
completion(userBool)
})
}
提案してくれてありがとう、私はそれを調べます。 :) –
完璧に作業しました!ありがとう! –
素晴らしい!私はそれが助けてうれしいです。 :) –