AFNetworking 3.0中缺少AFURLResponseSerialization

3
我被分配到一个使用手动添加的afnetworking框架的项目中。我删除了它,并通过cocoaPods安装了AFNetworking 3.0。但现在有很多问题出现了。我之前手动指定了可接受的内容类型,如下所示:
AFImageResponseSerializer *serializer = [[AFImageResponseSerializer alloc] init];


serializer.acceptableContentTypes = [serializer.acceptableContentTypes setByAddingObject:@"application/x-www-form-urlencoded"];

self.MyCollectionViewCell.uiButton.imageView.imageResponseSerializer = serializer;

[self.MyCollectionViewCell.uibutton.imageView setImageWithURLRequest:request placeholderImage:nil
                                                                                 success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
 NSLog(@"Loaded successfully: %ld", (long)[response statusCode]);

[self.MyCollectionViewCell.uibutton setImage:image forState:UIControlStateNormal];

                                                                                 } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error){
    NSLog(@"failed loading: %@", error);

                                                                                 }];

在 AfNetworking 3 版本中没有这样的属性。
@property (nonatomic, strong) id <AFURLResponseSerialization> imageResponseSerializer;

我一直在寻找3.0版本中的等效方法。或者是否有其他方法来解决手动设置可接受内容类型的问题。如果有人能帮助我,我将非常感激。

1个回答

2

AFNetworking的3.x版本中,API已经发生了变化。

现在UIImageView+AFNetworking使用一个AFImageDownloader实例来管理图像下载任务,而AFImageDownloader使用一个AFHTTPSessionManager实例来管理http请求,因此您可以通过AFImageDownloader指定自定义的AFImageResponseSerializer,如下所示:

AFImageResponseSerializer *serializer = [[AFImageResponseSerializer alloc] init];
serializer.acceptableContentTypes = [serializer.acceptableContentTypes setByAddingObject:@"application/x-www-form-urlencoded"];

AFHTTPSessionManager *sessionManager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:defaultConfiguration];
sessionManager.responseSerializer = serializer;

AFImageDownloader *imageDownloader = [[AFImageDownloader alloc] 
             initWithSessionManager:sessionManager
             downloadPrioritization:AFImageDownloadPrioritizationFIFO
             maximumActiveDownloads:4
                         imageCache:[[AFAutoPurgingImageCache alloc] init]];
[UIImageView setSharedImageDownloader:imageDownloader];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接