Firebase使用电子邮件和密码创建用户给我字符串必须是解包错误

问题描述 投票:0回答:2
Auth.auth().createUser(withEmail: email, password: password) { (authResult, error) in
    // ...
    guard let user = authResult?.user else { return }
}

我从Firebase复制并粘贴了这一行并遇到了这些错误。

Errors

ios swift xcode firebase
2个回答
3
投票

这些错误是由您的电子邮件和密码是可选的(String?vs String)引起的。在将它们传递给createUser之前,您需要打开它们。您可以在进行调用之前添加行guard let email = email, let password = password else { return }以删除错误。然后,根据您获取值的方式,您可能希望显示用户消息(如果它们为空)。


0
投票

@Jeremiah是对的。您正尝试将“可选”字符串传递到Firebase函数中。

可选意味着它可以有一个值,也可以是零。您可以通过几种不同的方式打开这两个字符串(电子邮件和密码):

    guard let email = email?.trimmingCharacters(in: .whitespacesAndNewlines).lowercased(),
        !emailAddress.isEmpty else {
            // Uh oh email address is empty!  Show an error.
            return
    }

    guard let password = password, !password.isEmpty else {
        // Uh oh password is empty!  Show an error.
        return
    }
    login(with: emailAddress, password: password)

要么:

    if let email = email?.trimmingCharacters(in: .whitespacesAndNewlines).lowercased(),
        let password = password, !email.isEmpty, !password.isEmpty {
        // Both email and password have values, do stuff:
    login(with: emailAddress, password: password)
            return
    } else {
        // Either email or password are empty, show an error
        return
    }

/// Asks Firebase to login our user.
private func login(with email: String, password: String) {
    Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
        if let error = error, !error.isEmpty {
            // Error signing in!
        }

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