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>.

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

谢谢

4

1 回答 1

30

传递到完成块的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)以确保图像是否已成功检索。

于 2015-11-26T20:44:59.470 回答