【问题标题】:AFNetworking 3.0 AFURLResponseSerialization missingAFNetworking 3.0 AFURLResponseSerialization 缺失
【发布时间】:2016-02-23 19:51:23
【问题描述】:

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

【问题讨论】:

    标签: ios objective-c afnetworking


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 2016-04-17
      • 1970-01-01
      相关资源
      最近更新 更多