Establezca la image de la celda TableView desde la descarga de AFNetworking

Estoy usando AFNetworking para download el set de imágenes de RSS feed en la vista de tabla. Lo que sigue es el código que estoy usando.

- (UITableViewCell *)tableView:(UITableview *)tableView cellForItemAtIndexPath:(NSIndexPath *)indexPath; { Cell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"MY_CELL" forIndexPath:indexPath]; NSString *wallpaperLink = [af setThumbString:[[feeds objectAtIndex:indexPath.row] objectForKey: @"wallpaper"]]; //AfNetwork Download AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:wallpaperLink]]]; requestOperation.responseSerializer = [AFImageResponseSerializer serializer]; [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { //Set Cell Image from response cell.imageView.image = responseObject; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Image error: %@", error); }]; [requestOperation start]; return cell; } 

Pero cuando repaso algunos tutoriales, me doy count de que esta no es la forma de download imágenes asincrónicas con AFNetworking. ¿Alguien puede decirme cuál es mi código, cómo download y agregar el object de responseobject a cell.imageView.image ?

Lo hago de esa manera para evitar pérdidas de memory:

 NSURL *url = [NSURL URLWithString:@"http:url..."]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; UIImage *placeholderImage = [UIImage imageNamed:@"your_placeholder"]; __weak UITableViewCell *weakCell = cell; [cell.imageView setImageWithURLRequest:request placeholderImage:placeholderImage success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { weakCell.imageView.image = image; [weakCell setNeedsLayout]; } failure:nil]; 

Funciona bien con AFNetworking 2.

Como sugiere @Greg en un comentario: Tienes que agregar #import "UIImageView+AFNetworking.h".

Si está utilizando AFNetworking, ¿por qué no usar la categoría UIImageView + AFNetworking? Simplemente importe UIImageView + AFNetworking.h y use este método:

 - (void)setImageWithURLRequest:(NSURLRequest *)urlRequest placeholderImage:(UIImage *)placeholderImage success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure; 

Editar: ¡No olvides llamar a setNeedsLayout en la celda después de configurar la image!

Cuando realiza una descarga de imágenes asíncronas, no puede get la image de UITableViewCell inmediatamente en UITableViewCell . Por lo tanto, debe download las imágenes y mostrarlas utilizando una matriz de imágenes descargadas según tableView indexPath .

Consulte este enlace para download la image con carga UITableViewCell y mostrarla en UITableViewCell .

¡Gracias!