Appareantly there is no AFImageRequestOperation
, but only AFImageResponseSerializer
and frankly I don't get it or maybe I'm just looking too long through AFNetworking site... Downloading images with previous AFNetworking was like a charm. I'd hate to go back to older AFnetworking, since I did almost all stuff via the new version... Anyone?
How to download image with AFNetworking 2.0?
Asked Answered
SO you want something like this for 2.0.
AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest];
requestOperation.responseSerializer = [AFImageResponseSerializer serializer];
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Response: %@", responseObject);
_imageView.image = responseObject;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Image error: %@", error);
}];
[requestOperation start];
As mentioned by Adam you can also do something like the below if you are just wanting to throw it into an imageView
[myImageView setImageWithURL:[NSURL URLWithString:@"http://sitewithimage.com/images/myimage.png"]];
Would this be on the main queue or the background queue? –
Outgrowth
@Tander The completion blocks run on the main queue –
Shank
This answer's great and all, but check out github.com/AFNetworking/AFNetworking/blob/master/…, a lot of donkey work done for you if you're just putting an image in an image view –
Quartersaw
@AdamWaite thanks, I updated my answer with a generic version, however if someone would like to use placeholders and such you can look at all the options in the link –
Shank
Bot's answer that the completion block is correct, though simplifying just a little. There's a
completionQueue
property on AFURLConnectionOperation that you can use to specify the queue used. The default is the main queue. :) –
Burglary for old version, there is no responseSerializer, you can also
AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest];
//requestOperation.responseSerializer = [AFImageResponseSerializer serializer];
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Response: %@", responseObject);
_imageView.image = [UIImage imageWithData:responseObject];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Image error: %@", error);
}];
[requestOperation start];
For people using AFNetworking
in Swift, above solution can be written as below
let requestOperation : AFHTTPRequestOperation = AFHTTPRequestOperation(request: urlRequest)
requestOperation.responseSerializer = AFImageResponseSerializer()
requestOperation.setCompletionBlockWithSuccess({ (requestOperation, responseObject) in
print(responseObject)
_imageView.image = responseObject as? UIImage
}) { (requestOperation, error) in
print(error)
}
requestOperation.start()
© 2022 - 2024 — McMap. All rights reserved.