我正在尝试更新我的用户配置文件,但收到错误消息,我该如何解决?
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.text
、self.EmailTextField.text
和 ProfileImageUrl
当您使用 !
感叹号时,您将强制展开可选值并假定“它永远不会为 nil”,因此如果您访问 nil
应用程序将崩溃的值。
所以永远不要使用 !
。我宁愿洒上 if let
和 guard 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/