【问题标题】:AlamofireImage: Can't get image in completion block from af_setImageWithURLAlamofireImage:无法从 af_setImageWithURL 获取完成块中的图像
【发布时间】:2016-03-01 00:07:44
【问题描述】:

全部

我正在学习 Swift,我正在尝试使用 AlamofireImage 在 UIImageView 上设置图像。我正在使用以下代码:

self.listImageView.af_setImageWithURL(
        NSURL(string: list!.image!)!,
        placeholderImage: nil,
        filter: nil,
        imageTransition: .CrossDissolve(0.5),
        completion:{ image in
            print(image)
        }
)

控制台中的结果如下:

SUCCESS: <UIImage: 0x7fb0c3ec3d30>, {512, 286}

我的目标是在下载图像后对图像进行处理,但问题是我不了解完成回调的签名,也不知道如何访问完成块中的图像。根据文档,是Result&lt;UIImage, NSError&gt;

我想这很简单,但我没有意识到。

谢谢

【问题讨论】:

    标签: ios alamofireimage


    【解决方案1】:

    传递到完成块的image 变量实际上是Alamofire.Response 类型,而不是获取的底层UIImage 实例本身。

    您需要像下面这样更新完成块,以便从响应中获取实际图像:

    self.listImageView.af_setImage(
        withURL: URL(string: list!.image!)!,
        placeholderImage: nil,
        filter: nil,
        imageTransition: .crossDissolve(0.5),
        completion: { response in
            print(response.value) # UIImage
            print(response.error) # NSError
        }
    )
    

    您可能首先要检查response.result.isSuccess(或他的兄弟response.result.isFailure)以确保图像是否已成功检索。

    【讨论】:

    • 谢谢,正是我所需要的,但我不得不说,弄明白这一点的反应不是很友好 :)
    • 太棒了。这对我的聊天应用程序帮助很大。
    猜你喜欢
    • 2016-03-06
    • 2016-01-23
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 2012-06-12
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多