ios - void 函数中出现意外的非 void 返回值 - Swift 4(Firebase、Firestore)

标签 ios swift firebase google-cloud-firestore

所以我想要一个 bool 函数,根据 users 中的用户是否存在给定的电子邮件来返回 true 或 false收藏。

但是,如果我尝试返回 TrueFalse getDocuments内打电话我收到错误:non-void return value in void function

func checkUserWith(email: String) -> Bool
{
    let usersDB = database.collection("users")
    usersDB.whereField("email", isEqualTo: email).getDocuments { (snapshot, error) in

        if error != nil
        {
            print("Error: \(error?.localizedDescription ?? "")")
            return false
        }

        for document in (snapshot?.documents)! {
            if document.data()["email"]! as! String == email {
                return true
            }
        }

        return false
    }
}

我有一种感觉,这是因为我试图在 Firestore 调用中返回一个 bool 值,而该调用需要不同的变量类型?

最佳答案

由于 firebase 操作为您提供了回调闭包,并且调用是异步进行的,因此我相信您不可能直接从闭包返回。但是,您可以返回一个指示 true 或 false 的转义闭包,如下所示...

func checkUserWith(email: String, completion: @escaping (Bool) -> Void)
{
    let usersDB = database.collection("users")
    usersDB.whereField("email", isEqualTo: email).getDocuments { (snapshot, error) in

        if error != nil
        {
            print("Error: \(error?.localizedDescription ?? "")")
            completion(false)
        }

        for document in (snapshot?.documents)! {
            if document.data()["email"]! as! String == email {
                completion(true)
                return
            }
        }

        completion(false)
    }
}

然后当你调用这个方法时:

checkUserWith(email: emailHere) { (isSucceeded) in
    if isSucceeded {
        //it exists, do something
    } else {
        //user does not exist, do something else
    }
}

关于ios - void 函数中出现意外的非 void 返回值 - Swift 4(Firebase、Firestore),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54129443/

相关文章:

ios - 以编程方式添加约束的问题

XCode,Swift(域 = NSPOSIXErrorDomain,代码 = 22)

swift - 评估 Swift 的 Bool?一行中的 true/false/nil?

ios - 限制对 Firebase 存储的访问,以便只有我的应用可以访问它

ios - 使用 UIDocumentPickerViewController 在 Swift 中导入文本

ios - 使用自定义字体时,日语文本在 IOS 上不垂直居中

javascript - iOS Safari 中的持久本地存储问题

ios - ViewController 传感器在 swift 弹出后仍然触发

javascript - 如何检查负责SSR的google云功能是否运行?

javascript - 当我访问对象的值时获取未定义的值