AFNetworking 3.0 AFURLResponseSerialization отсутствует

Мне поручили работать над проектом, в котором использовалась afnetworking, добавленная вручную. Я удалил его и установил AFNetworking 3.0 через CocoPods.

Ряд вещей сломан. Я вручную назначал допустимый тип контента, как показано ниже:

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. Или есть ли другой способ обойти проблему ручной установки приемлемого типа контента. Я буду очень благодарен, если кто-то может помочь мне с этим.


person userG    schedule 23.02.2016    source источник


Ответы (1)


API изменился в версии 3.x AFNetworking.

Теперь UIImageView+AFNetworking использует экземпляр AFImageDownloader для управления задачами загрузки изображений, а AFImageDownloader использует экземпляр AFHTTPSessionManager для управления http-запросом, поэтому вы можете назначить свои пользовательские AFImageResponseSerializerAFImageDownloader следующим образом:

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];
person Hong Duan    schedule 24.02.2016