AlamofireImage:无法在af_setImageWithURL的完成块中获取图像

10

全部

我正在学习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<UIImage,NSError>

我想这应该很简单,但我还没有意识到它。

谢谢

1个回答

31

传入完成块的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),以确保图像是否已成功获取。


1
谢谢,正是我所需要的,但我必须说,这个回应并不是很友好,让人难以理解 :) - estemendoza
太好了。这对我的聊天应用程序非常有帮助。 - Vinod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接