我需要在DispatchGroup()返回图像。通知这是我的代码:
func getImage() -> UIImage? {
guard isLoaded else { return nil }
var image: UIImage?
let group = DispatchGroup()
group.enter()
survice.getWeatherImage(data!.list.first!.weather.first!!.icon) { uiimage in
image = uiimage
group.leave()
}
group.notify(queue: .main) {
return image
}
}
我有一个错误:无法将类型"UIImage?"的值转换为闭包结果类型"Void"
请帮我返回图像,我尝试了一切,但我不能弄清楚。
1条答案
按热度按时间yeotifhr1#
看起来你正在尝试使用
DispatchGroup
使一个异步函数同步,但这不是API的工作方式。如果你想了解更多关于DispatchGroup
的信息,请再问一个问题。现在,让我们来解决你遇到的问题。你可以用两种不同的方法来解决这个问题。
1.您可以考虑在
getImage
函数中使用一个完成闭包,以便在图像准备就绪时将图像传递回调用者:这样称呼它:
或者,您可以将其编写为
async
函数(有关更多信息,请参见"Meet async/await in Swift")。这样称呼它:
如果调用它的函数本身不是异步的,你可能需要在一个任务中调用异步函数: