arrays - 无法将类型“[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
}
}
解决方案
您需要UIImage
从 s中提取一个数组imagePost
,这很容易使用map
:
uploadImages(images: imagePost.map { $0.image }, itemId: save.id) { ( imageLinkArray) in
// ....
}
推荐阅读
- laravel - 使用 datepicker 检查 18 岁以上用户的年龄
- ibm-cloud - IBM Cloud App ID:如何使用 ibmcloud-appid 为用户设置登录?
- php - 如何使用php在while循环中填充引导导航选项卡上的数据
- java - 如何在 Java 中使用 MapStruct 进行参数化映射?
- javascript - 在一组按钮中激活单个按钮
- batch-file - 批处理/查找和编辑 TXT 或 XML 文件中的特定位置并将其替换为随机
- loops - 从数据库查询中将数据移动到维度结构中
- linux - 如何通过 shell 脚本在 Linux 操作系统中创建多用户?
- python - 在python中汇总时过滤
- python - Python - Big(O) 运行时:列表理解和 For 循环