swift - 尝试更改个人资料照片时应用程序崩溃

标签 swift firebase firebase-realtime-database firebase-storage

我正在我的应用程序的编辑个人资料部分工作。当我尝试更改和更新用户个人资料照片时。应用程序崩溃,我收到此错误

原因:'URL 方案必须是 gs://、http://或 https://之一

当我创建新的个人资料并添加个人资料照片或上传照片时,它工作正常,但当我尝试更改个人资料照片时,我得到了这个。它将首先删除个人资料照片并更新(当用户没有照片时, ImageView 保持灰色),然后当我尝试再次重新更改照片时,它会崩溃。

这是我的代码。

func updateProfileImage() {
        guard imageChanged == true else { return }
        guard let currentUid = Auth.auth().currentUser?.uid else { return }
        guard let user = self.user else { return }

        Storage.storage().reference(forURL: user.profileImageUrl).delete(completion: nil)

        let filename = NSUUID().uuidString

        guard let updatedProfileImage = profileImageView.image else { return }

        guard let imageData = updatedProfileImage.jpegData(compressionQuality: 0.3) else { return }

        STORAGE_PROFILE_IMAGES_REF.child(filename).putData(imageData, metadata: nil) { (metadata, error) in

            if let error = error {
                print("Failed to upload image to storage with error: ", error.localizedDescription)
            }

            STORAGE_PROFILE_IMAGES_REF.downloadURL(completion: { (url, error) in
                USER_REF.child(currentUid).child("profileImageUrl").setValue(url?.absoluteString, withCompletionBlock: { (err, ref) in

                    guard let userProfileController = self.userProfileController else { return }
                    userProfileController.fetchCurrentUserData()

                    self.dismiss(animated: true, completion: nil)
                })
            })
        }
    }
}



最佳答案

首先要检查 URL 是否有效,或者是否使用防护

  guard let urlis = yourUrl else{
  // url is nill.
      return
      }
if let url = NSURL(string: urlis) {
  // your image code  
  }
else{
  // url is invalid.
  return
  }

添加异常断点:这个快速提示将为您节省大量调试时间!因此 Xcode 将在捕获异常的地方停止。

在您的项目中,转到断点导航器 enter image description here ,单击“+”按钮和“添加异常断点...”

关于swift - 尝试更改个人资料照片时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56783298/

相关文章:

ios - Watchkit/Xcode 中 Storyboard的渐变

swift - 您如何检测没有移动或持续时间的 SwiftUI touchDown 事件?

TableView 中的 iOS Swift 4 搜索栏

java - 如何将一组建议添加到 setSuggestions 中

android - 删除 ChildEventListener

javascript - 使用 Firebase 为 Web 应用创建房间

ios - 重复的对象被追加到数组 swift firebase 中

java - 通过 Firebase 在 Android 应用程序中进行身份验证 : Get the user’s first and last name

javascript - Firebase 3.6.2 Web SDK 缺失 "use strict"

javascript - 如何在登录时区分用户类型?