我正在尝试从 URL 下载图像并将其保存到模型变量中。但它没有设置图像。在 setImage 中,我看到它正在下载一些数据。 URL 已检查并正常工作。但是当我检查它是否为零时,它显示“空输入”、“空输出”。
let inputImage = UIImageView()
let outputImage = UIImageView()
DispatchQueue.main.async {
let inputURL = URL(string: "someURL")
let outputURL = URL(string: "someURL")
inputImage.kf.setImage(with: inputURL)
outputImage.kf.setImage(with: outputURL)
}
let coreDataModel = CoreDataModel()
if let inputImageData = inputImage.image?.pngData()
{ cloudAnalysisModel.input_image = inputImageData }
else
{ print("empty input") }
if let outputImageData = outputImage.image?.pngData()
{ coreDataModel.output_image = outputImageData }
else
{ print("empty output") }
答案 0 :(得分:0)
我想你还没有理解异步编程是如何工作的。块或completionHandler(以{开头并以}结尾的)在url被调用并获得响应后被执行
我在这里想说的是,该块可能随时执行,之后的代码会立即执行,即从 let coreDataModel
开始的代码
所以很明显 inputImageData
和 outputImageData
都将为空
现在进入解决方案:
你可以做的是:
DispatchGroup
来跟踪 DispatchQueue
More info here