更新Firebase Pods后出现类型转换错误,如何修复?
修复Firebase Auth创建用户时的回调类型不匹配错误
嗨,这个问题我升级Firebase Pods的时候也踩过坑!本质是Firebase Auth SDK更新后,createUser(withEmail:password:completion:)的回调签名变了,改两行代码就能搞定。
错误原因
更新后的Firebase Auth不再直接返回User?对象,而是把用户信息封装到了AuthDataResult这个新的包装类里,所以原来的(User?, Error?)回调类型就和现在要求的AuthDataResultCallback?(也就是(AuthDataResult?, Error?) -> Void)不匹配了。
修复步骤
- 把回调的参数类型从
(user: User?, error: Error?)改成(authResult: AuthDataResult?, error: Error?) - 要获取用户实例的话,从
authResult?.user里读取,而不是直接用原来的user参数
修改后的代码片段
static func signUp(username: String, email: String, User: String, Phone: String ,password: String, imageData: Data, onSuccess: @escaping () -> Void, onError: @escaping (_ errorMessage: String?) -> Void) { Auth.auth().createUser(withEmail: email, password: password, completion: { (authResult: AuthDataResult?, error: Error?) in if error != nil { onError(error!.localizedDescription) return } // 如果需要获取用户信息,用下面的方式 guard let user = authResult?.user else { onError("Failed to get user data") return } // 这里继续你的后续逻辑,比如保存用户信息到数据库等 onSuccess() }) }
其实就是换个回调参数的类型,再从authResult里拆出用户对象就行,是不是挺简单的😉
内容的提问来源于stack exchange,提问作者felon
相关产品推荐
相关产品推荐

