我将图像数组传递给函数,
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
中提取imagePost
的数组,使用map
即可轻松完成:
uploadImages(images: imagePost.map { $0.image }, itemId: save.id) { ( imageLinkArray) in
// ....
}