无法将类型'[ArrayImages]'的值转换为预期的参数类型'[UIImage?]'

问题描述 投票:-1回答:1

我将图像数组传递给函数,

struct ArrayImages: Hashable {
    var asset: PHAsset
    var image: UIImage
}

@State var imagePost: [ArrayImages] = []

然后转移到

uploadImages(images: **imagePost**, itemId: save.id) { ( imageLinkArray) in *// <- mistake here

save.imagePost = imageLinkArray

函数本身就是这样

let storage = Storage.storage()

func uploadImages(images: [UIImage?], itemId: String, completion: @escaping (_ imagePost: [String]) -> Void) {

    var uploadedImagesCount = 0
      var imageLinkArray: [String] = []
      var nameSuffix = 0

      for image in images {
          let fileName = "ItemImages/" + itemId + "/" + "\(nameSuffix)" + ".jpg"
        let imageData = image!.jpegData(compressionQuality: 0.8)

          saveImageInFirebase(imageData: imageData!, fileName: fileName) { (imagePost) in

              if imagePost != nil {
                  imageLinkArray.append(imagePost!)
                 uploadedImagesCount += 1

                  if uploadedImagesCount == images.count {
                      completion(imageLinkArray)
                  }
              }
          }
          nameSuffix += 1
      }

}

arrays swift image
1个回答
0
投票

您需要从UIImage中提取imagePost的数组,使用map即可轻松完成:

uploadImages(images: imagePost.map { $0.image }, itemId: save.id) { ( imageLinkArray) in 
    // ....
}

© www.soinside.com 2019 - 2024. All rights reserved.