2

在我当前的一个项目中下载图像时,我正在使用此代码,但它不适用于 AFNetworking 2.0。我尝试通过 AFImageResponseSerializer 但我找不到要使用的正确代码。

[cell.posterImage setImageWithURLRequest:urlRequest placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
            cell.posterImage.image = image;
        } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
            NSLog(@"Request failed with error: %@", error);
        }];

对 AFNetworking 2.0 中使用的新代码有什么建议吗?谢谢!

4

4 回答 4

4

我使用以下代码使其工作:

AFHTTPRequestOperation *posterOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest];
posterOperation.responseSerializer = [AFImageResponseSerializer serializer];
[posterOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Response: %@", responseObject);
    _posterImageView.image = responseObject;

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Image request failed with error: %@", error);
}];
[[NSOperationQueue mainQueue] addOperation:posterOperation];
[posterOperation start];

但是我在使用这个占位符图像时遇到了另一个问题。有任何想法吗?

于 2013-10-04T06:16:49.883 回答
3

您正在寻找UIImageView (AFNetworking)类别

#import "UIImageView+AFNetworking.h"

//...
[cell.posterImage setImageWithURLRequest:urlRequest placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
        cell.posterImage.image = image;
    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
        NSLog(@"Request failed with error: %@", error);
    }];

cell.posterImage必须是一个UIImageView不是一个UIImage

于 2013-11-01T21:51:26.760 回答
2

更新AFNetworking 2.0后(如果您的文件仅可用于下载,因此无法通过简单的 URL 访问):

NSString * methodURL = @"http://www.yourserver.com/pathToImageDownloadMethod";
NSInteger someIDYouHaveOfAnImage = 13;
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFImageResponseSerializer serializer];
NSDictionary * parameterDictionary = @{@"Parameter" : [NSNumber numberWithInteger:someIDYouHaveOfAnImage]};
[manager GET:methodURL parameters:parameterDictionary success:^(AFHTTPRequestOperation *operation, id responseObject) {
    if ([responseObject isKindOfClass:[UIImage class]]) {
        UIImage * image = responseObject;
        // Here is your image object
    }
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"failure getting the file : %@", error.localizedDescription);
}];

希望能帮助到你。

于 2014-09-16T13:50:55.770 回答
1

https://github.com/AFNetworking/AFNetworking/archive/master.zip包含 UIKit+AFNetworking 目录

于 2014-04-13T14:50:25.393 回答