【发布时间】:2018-02-22 06:19:03
【问题描述】:
我有一个 URL,想通过返回函数下载图像,但是我不能让它正常配合,这是我的 func:
func getTabImage(url: URL) -> UIImage {
Alamofire.request(url)
.responseImage { response in
if let image = response.result.value {
return image
} else {
print("Failed to get image")
}
}
}
我传入 URL,并希望从 alamofire 响应返回 UIImage。
但我明白了
void 函数中出现意外的非 void 返回值
用于返回语句。
我怎样才能正确地做到这一点?
【问题讨论】:
-
return image那行不通,因为调用是异步的。改用闭包。已经有很多问题了,寻找“Swift + Closure + Async”。对于错误消息(一旦您执行关闭操作就会消失),这是因为您说“-> UIImage”,但如果是if let image的 else,您不会返回任何内容。此外,在方法结束时,您也不会返回任何内容。 -
链接示例适用于 URLSession,但这是完全相同的想法。将回调添加到您的方法包装器签名,然后将其与要检索的值一起使用(示例中为字符串,但可以是任何值)。
-
@Moritz 他明确要求 Downloading UIImage via AlamofireImage 不会用stackoverflow.com/questions/31264172/… 标记重复可能是重复的,但这个问题与你标记的问题不同!跨度>
-
我知道你们两个在吵架。就我个人而言,我站在@Moritz 一边。正如我在第一条评论中所说,真正的问题是与对异步调用的误解有关。我建议作者寻找“Swift + Closure + Async”。此类问题的任何好的答案都应该显示正确的解决方案。我不会推荐一个答案而不是另一个答案,我希望所有作者都能理解一点,以使解决方案适应他们的代码。
-
@SalmanGhumsani 别担心。它发生了。人们不同意或误解,这就是生活。我们都是不同的。就我而言,没有冒犯或冒犯。祝你有美好的一天,先生。 :)
标签: ios swift alamofire alamofireimage