ios - 如何成功更新用户资料

标签 ios swift firebase

我正在尝试更新我的用户配置文件,但收到错误消息,我该如何解决?

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

newUsersReference.setValue(["username": self.UsernameTextField.text!, "email": self.EmailTextField.text!, "ProfileImageUrl": ProfileImageUrl!])

这是上下文的完整代码

let uid = user.uid
            let storage = Storage.storage()

            let storageRef = Storage.storage().reference(forURL: "gs://tvmassmedianetwork.appspot.com").child("profile_Image").child(uid)
            if let ProfileImge = self.SelectedImage, let imagedata = ProfileImge.jpegData(compressionQuality: 0.1) {
                storageRef.putData(imagedata, metadata: nil) { (metadata, error) in
                    if error != nil {
                    return
                }
               let ProfileImageUrl =    metadata?.storageReference?.downloadURL
                  let ref = Database.database().reference()
                  let UsersReference = ref.child("users").child(user.uid)

                  let newUsersReference = UsersReference.child(uid)
                    newUsersReference.setValue(["username": self.UsernameTextField.text!, "email": self.EmailTextField.text!, "ProfileImageUrl": ProfileImageUrl!])

最佳答案

现在您有 3 个可选值 self.UsernameTextField.textself.EmailTextField.textProfileImageUrl

当您使用 ! 感叹号时,您将强制展开可选值并假定“它永远不会为 nil”,因此如果您访问 nil 应用程序将崩溃的值。 所以永远不要使用 !。我宁愿洒上 if letguard let

 if let username  = self.UsernameTextField.text, let email = self.EmailTextField.text,let imageProfileUrl = ProfileImageUrl {
        newUsersReference.setValue(["username":username, "email": email, "ProfileImageUrl": imageProfileUrl])
    }

或执行以下操作

newUsersReference.setValue(["username":self.UsernameTextField.text ?? "", "email": self.EmailTextField.text ?? "", "ProfileImageUrl": imageProfileUrl ?? ""])

如果值为 nil

,您将设置默认值空字符串 ""

关于ios - 如何成功更新用户资料,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59004156/

相关文章:

ios - UINavigationController 原生的推送交互转场

ios - 如何使用 segues 执行自定义动画?

swift - Swift中 `try`关键字的用途是什么?

ios - 如何将图像裁剪为圆形且圆形内有网格

ios - 使用 Swift 和 Firebase 更改用户电子邮件和密码

ios - 获取 NSArray 键值

ios - 解析子查询过滤器 swift ios

java - 如何在 Android 中遍历 Firebase 结构?

javascript - 为什么我的 firebase 网站无法显示图像 block ?

ios - 什么时候发布 CGImageRef 合适?