如何使用AFNetworking 2.0下载图像?

时间:2013-10-21 18:09:15

标签: iphone ios xcode afnetworking-2

显然没有AFImageRequestOperation,但只有AFImageResponseSerializer并且坦率地说我没有得到它或者我只是在AFNetworking网站看起来太长了...用以前的AFNetworking下载图像就像魅力。我不想回到旧的AFnetworking,因为我通过新版本做了几乎所有的东西......任何人?

3 个答案:

答案 0 :(得分:126)

所以你想要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];

正如Adam所提到的,如果你只是想将它扔进一个imageView,你也可以做类似下面的事情

[myImageView setImageWithURL:[NSURL URLWithString:@"http://sitewithimage.com/images/myimage.png"]];

答案 1 :(得分:4)

对于旧版本,没有responseSerializer,你也可以

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];

答案 2 :(得分:0)

对于在Swift中使用AFNetworking的人,above solution可以写成如下

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