Hoy traemos un truco, que es el prefetch de una TableView en RxSwift. Es muy sencillo y bastante potente.
Recuerda, venimos de aquí, si eres nuevo.
Vamos adelante. Ahora mismo, tenemos un listado con información de álbumes que viene de un servicio paginado. Vamos a añadir un campo nuevo. Así que iremos al Album de la capa de datos.
El dato que recogeremos del servicio es cover_image y lo guardaremos como url.
Aquí ya hemos terminado. Ahora iremos a la capa de dominio. Agregaremos url en la entidad Album.
Y, actualizaremos, el mapper.
Y, por último, iremos a la capa de aplicación y haremos lo mismo.
Pues nada, que ya lo tenemos. 3 cambios y ya tenemos la url de la imagen.
Lo primero, actualizaremos el Podfile y usaremos Kingfisher como herramienta para descargar imágenes. Tuve algún error al hacer Podfile, lo solucioné agregando algunos pods en la raíz del proyecto.
Crearemos un nuevo componente imagen.
Aquí no hay nada fuera de lo normal. En el didSet, si tenemos una url, cargaremos la imagen y en caso contrario, cancelaremos la carga. Esto lo usaremos como prevención al reciclar una celda.
En la celda SearchTableViewCell, tendremos esto. Agregaremos un outlet nuevo.
Actualizaremos la construcción de la celda.
Y, añadiremos, un método nuevo, prepareForReuse.
Tampoco nos olvidemos del bind.
Con esto, ya podríamos comprobar la app. Pero tenemos un problema. Si hacemos scroll muy rápido. Las imágenes tardan un poco en cargar, según la conexión que tengamos.
¿Cómo solucionarlo? Hay un truquito muy sencillo y muy eficaz.
Agregaremos al final del Controller lo siguiente.
Y, en el SearchSectionItem, creamos una nueva property.
Y ya lo tendríamos. Ahora, tendremos un prefetch en la tabla, de forma muy sencilla.
Hasta aquí, el truco del día.
El código, lo tienes aquí.