<分区>
我有一个带有完成处理程序的方法
func postLandGradingImages(cellHolder: Array<ImagesData>, completionHandler:@escaping (_ result:Bool) -> Void) {
//Define bool for returning data
var returnedResults = false
//Call API
WebService().postLandGradingImages(cellHolder)
{
(result: Bool) in
DispatchQueue.main.async {
//Return our results
returnedResults = result
completionHandler(returnedResults)
}
}
}
我在循环中调用此方法,如下所示:
for asset: PHAsset in photoAssets
{
self.postLandGradingImages(cellHolder: [ImagesData(jobNo: self.JobNo, ImageBytes: imageStr)]) { result in
}
}
我想做的是,如果这在某个时候失败了,则显示警报并停止循环,在循环完成并且我的所有调用都返回 true 后,在最后显示警报。
这是我试过的:
var returned = false
for asset: PHAsset in photoAssets
{
imageManager.requestImage(for: asset, targetSize: CGSize(width: asset.pixelWidth, height: asset.pixelHeight), contentMode: .aspectFill, options: options, resultHandler: { (image, info) in
let imageData:Data = UIImagePNGRepresentation(image!)!
let imageStr = imageData.base64EncodedString()
self.postLandGradingImages(cellHolder: [ImagesData(jobNo: self.JobNo, ImageBytes: imageStr)]) { result in
returned = result
if(returned == false)
{
self.customAlert(title: "Error", message: "There was an error when saving data, please try again later.")
}
}
})
}
if(returned == true)
{
self.customAlert(title: "Error", message: “All Good“)
}
但我的警告说 All Good 从来没有出现,因为甚至在我第一次打电话之前就已经检查返回了。我做错了什么,我该如何完成我想要完成的事情?