Search code examples
iosxcodeafnetworkingafnetworking-2

Trying to port code to AFNetworking 2.0


I am trying to port the following code to AFNetworking 2.0

//load the image
		API* api = [API sharedInstance];
		int IdPhoto = [[data objectForKey:@"IdPhoto"] intValue];
		NSURL* imageURL = [api urlForImageWithId:[NSNumber numberWithInt: IdPhoto] isThumb:YES];
		AFImageRequestOperation* imageOperation = [AFImageRequestOperation imageRequestOperationWithRequest: [NSURLRequest requestWithURL:imageURL] success:^(UIImage *image) {
            
			//create an image view, add it to the view
			UIImageView* thumbView = [[UIImageView alloc] initWithImage: image];
            thumbView.frame = CGRectMake(0,0,90,90);
            thumbView.contentMode = UIViewContentModeScaleAspectFit;
			[self insertSubview: thumbView belowSubview: caption];
		}];
		NSOperationQueue* queue = [[NSOperationQueue alloc] init];
		[queue addOperation:imageOperation];

Here is my attempt. I'm not sure if it is correct, could you please tell me if it is.

API* api = [API sharedInstance];
         int IdPhoto = [[data objectForKey:@"IdPhoto"] intValue];
         NSURL* imageURL = [api urlForImageWithId:[NSNumber numberWithInt: IdPhoto] isThumb:YES];
        
        
        AFHTTPRequestOperation* imageOperation = [[AFHTTPRequestOperation alloc] initWithRequest:[NSURLRequest requestWithURL:imageURL]];
        imageOperation.responseSerializer = [AFImageResponseSerializer serializer];
        
        
        [imageOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
            UIImage *image;
            UIImageView* thumbView = [[UIImageView alloc] initWithImage: image];
            thumbView.frame = CGRectMake(0,0,90,90);
            thumbView.contentMode = UIViewContentModeScaleAspectFit;
            [self insertSubview: thumbView belowSubview: caption];
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            //failure
            NSLog(@"Failed");
        }];
        
        NSOperationQueue* queue = [[NSOperationQueue alloc] init];
        [queue addOperation:imageOperation];
        

I think it is not correct, since the image is not being loaded correctly.

Thanks


Solution

  • responseObject should be your image object, so just use this line:

    UIImage* image = (UIImage*) responseObject;