【发布时间】:2019-03-05 22:09:07
【问题描述】:
在 swift 4 中,我有一个使用完成处理程序执行循环的方法:
func loopImages(qa: QAClass, assets: [DKAsset], completion: ([PhotoClass]) -> Void) {
var imageCellHolder = [PhotoClass]()
for x in assets
{
x.fetchOriginalImage(completeBlock: { (image, info) in
let compressedImage = image?.resizeWithWidth(width: 800)
let imageData:Data = compressedImage!.jpegData(compressionQuality: 0.5)!
imageCellHolder.append(PhotoClass(job: String(self.selectedCommunity! + self.selectedLot!), photo: imageData, itemId: qa.itemId))
})
}
completion(imageCellHolder)
}
这是它假设在循环完成时调用的方法:
func loopFinished(imageCellHolder: [PhotoClass])
{
self.saveQAPhotos(cellHolder: imageCellHolder) { result in
print(result)
}
}
这就是我调用循环方法的方式:
self.loopImages(qa: qa, assets: assets, completion: self.loopFinished)
我的问题是在循环完成之前调用了完成处理程序方法(loopFinished)。
如果您想知道,fetchOriginalImage 来自库 DKImagePickerController https://github.com/zhangao0086/DKImagePickerController
【问题讨论】: