【问题标题】:Downloading UIImage via AlamofireImage? [duplicate]通过 AlamofireImage 下载 UIImage? [复制]
【发布时间】: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


【解决方案1】:

您可以使用以下功能下载图片:

func getImage(_ url:String,handler: @escaping (UIImage?)->Void) {
        print(url)
        Alamofire.request(url, method: .get).responseImage { response in
            if let data = response.result.value {
                handler(data)
            } else {
                handler(nil)
            }
        }
    }

用途

getImage("http://") { (image) in
    if image != nil {
        print(image)
    }
}

或者

如果您想在UIImageView 上设置图像,请使用AlamofireImage 的扩展名。

if let imageURL = URL(string: "http://"), let placeholder = UIImage(named: "default") {
     imageView.af_setImage(withURL: imageURL, placeholderImage: placeholder) //set image automatically when download compelete.
}

【讨论】:

  • 我想在标签栏图标上使用图像。我也缺少参数处理程序的参数
  • 那是备用的,因为我假设你想在 imageView 上设置图像
  • 谢谢,那么我如何调用 getImage 的第一个示例?因为我遇到了“处理程序”错误的问题
  • 只需调用getImage,编译器就会帮你搞定!
  • 我的意思是我不明白用什么来填充处理程序的占位符?
猜你喜欢
  • 1970-01-01
  • 2016-02-25
  • 2017-07-21
  • 2017-01-19
  • 1970-01-01
  • 2016-02-02
  • 2012-08-26
  • 1970-01-01
  • 2017-01-01
相关资源
最近更新 更多