swift - 我有一个 'UIImage',我想将其转换为 NSData 以上传到 firebase 存储

标签 swift xcode

我想将 Jpeg 类型的图像上传到 firebase 存储

下面是上传到firebase存储的函数

func uploadImageToFirebase (data: NSData){

         let StorageRef = Storage.storage().reference().child("User Products")
        let uploadMetadata = StorageMetadata()
        uploadMetadata.contentType = "image/jpeg"
        StorageRef.putData(data as Data, metadata: uploadMetadata) { (metadata, error) in
            if (error != nil){

                print("I have an error")
            }else {
                print("upload metadata \(String(describing: metadata))")
            }

        }

这里我有一个选择器 Controller 函数,它位于另一个名为CamViewController的类中

这里我从Mainviewcontroller类调用函数

var discover = MainViewController()
 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage
          imageCam.image = image

        discover.uploadImageToFirebase(data: image)

        picker.dismiss(animated: true, completion: nil)

    }

我收到错误:

Cannot convert value of type UIImage? to expected argument type NSData

最佳答案

你需要

func uploadImageToFirebase (_ image:UIImage){
  gurad let data = image.pngData() else { return }
  ..... OR
  guard let data = image.jpegData(compressionQuality: 0.5) else { return }

}
<小时/>
discover.uploadImageToFirebase(image)

错误很明显,参数类型是NSData,因此您无法传递UIImage

关于swift - 我有一个 'UIImage',我想将其转换为 NSData 以上传到 firebase 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55858916/

相关文章:

iphone - 尝试重构类时 Xcode 被卡住

ios - UIActivityIndi​​cator - 开始延迟动画

ios - SwiftUI 获取 TextField 或任何 View 的坐标

swift - Swift 是否允许声明一个没有初始值的变量?

ios - 根据条件更新约束

ios - 在 IOS Objective-C 代码中添加多个目标 header

ios - UISearchController 返回部分而不是过滤的 tableview 项目

swift - 如何使用 RxSwift 在一个地方捕获两个请求的错误

ios - Swift - 将 NSLayoutConstraint 添加到我的按钮

ios - 创建 UICollectionViewCell 时如何在发件人中添加标签值?