首页 > 解决方案 > 无法将类型“[ArrayImages]”的值转换为预期的参数类型“[UIImage?]”

问题描述

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

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
      }

}

标签: arraysswift

解决方案


您需要UIImage从 s中提取一个数组imagePost,这很容易使用map

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


推荐阅读