ios - AFNetworking 3.0 AFURLResponseSerialization 缺失

标签 ios objective-c afnetworking

我被指派从事一个使用手动添加的 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 版中的等效项。或者有没有其他方法可以解决手动设置可接受的内容类型的问题。如果有人可以帮助我,我将不胜感激。

最佳答案

API 在 AFNetworking 的 3.x 版本中发生了变化。

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

关于ios - AFNetworking 3.0 AFURLResponseSerialization 缺失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586873/

相关文章:

ios - iOS Swift 中解析密码重置错误

ios - 我可以合并 RAC 信号但仍然单独获取每个错误吗?

ios - AFNetworking 2 + SwiftyJSON

ios - 检查多个异步网络操作何时完成

objective-c - 有没有办法将方法作为 block 传递?

ios - 带有 Swift 滑动菜单的空白菜单按钮

ios - SGActionView 网格菜单

ios - 如何在 ios 中获取水平表格 View 的中间单元格?

iphone - 在 Objective-c 中实现协议(protocol)方法

ios - 如何在 ios 中重新注册推送通知