UICollectionView: descarga de imágenes y recarga efectiva de datos, como Instagram

Noté que aplicaciones como Intagram usanUICollectionViews para visualizar el feed de fotos. También noté que las celdas de estas fotos de alguna manera se colocan en la pantalla.antes de Las fotos reales se descargan completamente. Luego, cuando se completa una descarga, esa foto se muestra bien en la celda correcta.

Me gustaría copiar esa funcionalidad, pero no sé cómo hacerlo.

Actualmente estoy descargando un granJSON objeto que transformo en una matriz deNSDictionaries. CadaNSDictionary contiene información sobre cada foto, y entre esa información, se presenta una URL. En esta URL, puedo encontrar la imagen correspondiente que necesito descargar y mostrar en miUICollectionViewCells

En este momento, repito esta lista e inicio una descarga para cada URL que veo. Cuando la descarga está completa, recargo la vista de colección usando[self.collectionView reloadData]. Pero, como pueden imaginar, si tengo 30 celdas que todas quieren una imagen, hay muchasreloadData llamadas

Estoy usando AFNetworking para manejar la descarga, aquí está el método, al que llamo según la URL que mencioné anteriormente:

-(void) downloadFeedImages:(NSString *) photoURL imageDescs:(NSDictionary*)imageDescs photoId:(NSString *)photoID{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *directory = [paths objectAtIndex:0];

    NSString* foofile = [directory stringByAppendingPathComponent:photoID];

    if([[NSFileManager defaultManager] fileExistsAtPath:foofile]){
        // IF IMAGE IS CACHED
        [self.collectionView reloadData];
        return;
    }

    NSLog(@"photoURL: %@", photoURL);
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:photoURL]];
    AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:request
                                                                              imageProcessingBlock:nil
                                                                                           success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
                                                                                               // Save Image
                                                                                               NSLog(@"URL-RESPONSE:%@", image);
                                                                                               NSString *myFile = [directory stringByAppendingPathComponent:photoID];

                                                                                               NSData *imageData = UIImagePNGRepresentation(image);
                                                                                               [imageData writeToFile:myFile  atomically: YES];
                                                                                               [self.collectionView reloadData];
                                                                                           }
                                                                                           failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
                                                                                               NSLog(@"ERROR: %@", [error localizedDescription]);
                                                                                           }];
    [[WebAPI sharedInstance] enqueueHTTPRequestOperation:operation];
}

Asi que Básicamente, me pregunto cómo puedo lograr la funcionalidad que tienen Instagram y aplicaciones similares cuando se trata de mostrar un feed con imágenes. Además, me gustaría saber una buena manera de iniciar una descarga para cada celda, y cuando la descarga haya finalizado, actualice esa celda, no vuelva a dibujar toda la vista con[reloadData]

Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta