在Swift中的if语句中重新分配值

问题描述 投票:0回答:1

以下是打印“ no username用户”,但将retVal打印为“ false”(我将功能更改为字符串只是为了进行故障排除,理想情况下应该是bool)我是新手,这绝对使我发疯。它正在重新分配retVal的代码块中,但是没有重新分配它

静态函数isUserNameUnique(_用户名:字符串)->字符串{

    var retVal = "false"

    let db = Firestore.firestore()
    let newQuery = db.collection("users").whereField("userName", isEqualTo: username)
    newQuery.getDocuments { (document, error) in
        if document!.isEmpty {
            retVal = "true"
            print("No user with username")

        }
    }
    print("\(retVal)")
    return retVal
}
ios swift if-statement google-cloud-firestore
1个回答
0
投票

您需要完成,因为请求是异步的,请使用Bool而不是String

static func isUserNameUnique(_ username : String,completion:@escaping((Bool) ->())) {

        let db = Firestore.firestore()
        let newQuery = db.collection("users").whereField("userName", isEqualTo: username)
        newQuery.getDocuments { (document, error) in 
            completion(document!.isEmpty)  
        } 
 }

© www.soinside.com 2019 - 2024. All rights reserved.