Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AlamofireImage: Can't get image in completion block from af_setImageWithURL

all

I am learning Swift and I am trying to set an image on a UIImageView using AlamofireImage. I am using the following code:

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

and the result in the console is the following:

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

My objective is to do something with the image once is downloaded, but the problem is that I don't understand the signature for the completion callback and I don't know how to access to the image in the completion block. According to the documentation, is Result<UIImage, NSError>.

I guess is something really simple, but I am not realizing it.

Thanks

like image 958
estemendoza Avatar asked Nov 26 '15 20:11

estemendoza


1 Answers

The image variable passed into the completion block is actually Alamofire.Response type, not the underlying UIImage instance itself that was fetched.

You need to update your completion block like below in order to get the actual image from the response:

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
    }
)

You might first want to check response.result.isSuccess (or his brother response.result.isFailure) to make sure whether the image has been successfully retrieved or not.

like image 110
Ozgur Vatansever Avatar answered Oct 02 '22 04:10

Ozgur Vatansever