无法转换“用户”类型的值?期望参数类型'用户!'

时间:2017-10-19 01:37:35

标签: swift firebase firebase-authentication optional

我怀疑我的代码有问题,我无法确定我在这里做错了什么。错误在这一行:Python 2.6在我的signUp函数中。

无法转换“用户”类型的值?期望参数类型'用户!' enter image description here

self.setUserInfo(firstLastName: firstLastName, user: user, username: username, location: location, biography: biography, password: password, pictureData: pictureData)

1 个答案:

答案 0 :(得分:-1)

在方法setUserInfo中,您使用"!"设置了用户参数的解包值,但在您的身份验证中。完成块似乎该值是可选的。

以下是解决问题的方法:

Auth.auth().createUser(withEmail: email, password: password) { [weak self] (user, error) in

    guard let unwrappedError = error, 
          let unwrappedUser = user, 
          let strongSelf = self 
    else {
        print(error?.localizedDescription)
        return
    }

    strongSelf.setUserInfo(firstLastName: firstLastName, user: unwrappedUser, username: username, location: location, biography: biography, password: password, pictureData: pictureData)
}
编辑:我添加了一个strongSelf模式并使用了一个guard语句,因为你明确地保留了self(在网络回调闭包中没有!),并且guard语句是在这种情况下处理有效性检查的首选方法,因为它使你的意图更加清晰。