我已经在项目的其他地方使用了一些代码,并对其进行了修改,以获取用户数据,但是有一个错误消息说完成是无法解决的标识符,我无法找到解决方案。
我已经尝试在调用本身中添加完成块,并通读Firebase文档以尝试找到解决方案,但是似乎什么都没起作用。
func observeCurrentUser() {
guard let currentUser = Auth.auth().currentUser else {
return
}
CURRENT_USERS_REF?.child(currentUser.uid).observeSingleEvent(of: .value, with: {
snapshot in
if let dict = snapshot.value as? [String: Any] {
let user = User.transformUser(dict: dict)
completion(user)
}
})
}
答案 0 :(得分:1)
您需要添加一个结尾的闭包(完成),因为当前语句completion(user)
显示您尚未添加
func observeCurrentUser(completion:@escaping((User?) -> ())) {
guard let currentUser = Auth.auth().currentUser else {
completion(nil)
return
}
CURRENT_USERS_REF?.child(currentUser.uid).observeSingleEvent(of: .value, with: {
snapshot in
if let dict = snapshot.value as? [String: Any] {
let user = User.transformUser(dict: dict)
completion(user)
}
})
}
答案 1 :(得分:0)
您必须在方法中将完成声明为参数 然后指定完成内容的数据类型。
func observeCurrentUser(completion: @escaping (_ user: UserModel )->(Void)) {
guard let currentUser = Auth.auth().currentUser else {
return
}
CURRENT_USERS_REF?.child(currentUser.uid).observeSingleEvent(of: .value, with: { snapshot in
if let dict = snapshot.value as? [String: Any] {
let user = User.transformUser(dict: dict)
completion(user)
}
})
}