【发布时间】:2018-08-06 01:25:27
【问题描述】:
我正在制作一个应用程序,我必须在其中返回一个字符串,表示存在对我的 firebase 实时数据库的某个引用(出于其他原因,我没有使用 Bool)。尽管直接在上面和下面执行打印命令,但当我打印函数时,字符串的值不会改变并打印其默认值“Unchanged”。
我的代码:
func checkIfMovieHasAlreadyBeenShown(movieID: String) -> String {
var hasItBeenSeen = "Unchanged"
let uid = Auth.auth().currentUser?.uid
let ref = Database.database().reference()
ref.child("Seen Movies").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.hasChild(movieID){
print("The Result:")
self.changeStringHasItBeenSeen(YNString: "yes")
print("YES")
}
else {
print("The Result:")
self.changeStringHasItBeenSeen(YNString: "no")
print("NO")
}
})
return hasItBeenSeen
}
打印在这里:
print(checkIfMovieHasAlreadyBeenShown(movieID: "39"))
print(checkIfMovieHasAlreadyBeenShown(movieID: "38"))
【问题讨论】:
-
@Schemetrical 的答案确实是问题所在:当您的
return hasItBeenSeen运行时,该值尚未加载。另见:stackoverflow.com/questions/43854811/…、stackoverflow.com/questions/43823808/…、stackoverflow.com/questions/41262793/…、stackoverflow.com/questions/42894472/…
标签: ios swift firebase firebase-realtime-database