Ios 如何在异步回调中访问函数参数?

Ios 如何在异步回调中访问函数参数?,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

我将参数uid传递给我的函数checkIfUserExists并进行异步调用。但是,我无法在异步调用的回调中访问uid

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,编译器应该很高兴。然而,你可能必须检查你是否想要一个对自我的弱引用,因为这样做意味着你想要一个强引用。谢谢,这就是问题所在