Ios 如何在异步回调中访问函数参数?
我将参数uid传递给我的函数checkIfUserExists并进行异步调用。但是,我无法在异步调用的回调中访问uidIos 如何在异步回调中访问函数参数?,ios,swift,Ios,Swift,我将参数uid传递给我的函数checkIfUserExists并进行异步调用。但是,我无法在异步调用的回调中访问uid class Database { func checkIfUserExists(uid: String){ let db = Firestore.firestore() db.collection("users").document(uid).getDocument { (snapshot, err) in if
class Database {
func checkIfUserExists(uid: String){
let db = Firestore.firestore()
db.collection("users").document(uid).getDocument { (snapshot, err) in
if let document = snapshot, document.exists {
print("User exists")
} else {
print("User does not exist, createUser()")
createUser(uid: uid)
}
}
}
}
错误:
Call to method 'createUser' in closure requires explicit 'self.' to make capture semantics explicit
知道如何访问uid或将其传递给异步调用,以便将其传递给createUser吗?错误告诉您createUser需要self,因为您正在捕获闭包中的数据库实例
Self.CudiAudio应解决您的问题,但您应该考虑如果需要在快照中添加[弱自],将错误插入到闭包中以防止保留循环。
问题不是UID,而是创建用户。简单地预先设定自我。调用createUser,编译器应该很高兴。然而,你可能必须检查你是否想要一个对自我的弱引用,因为这样做意味着你想要一个强引用。谢谢,这就是问题所在