Inicio Programación Cómo crear un sistema de caché de imágenes en Swift

Cómo crear un sistema de caché de imágenes en Swift

Las solicitudes de red son uno de los factores que pueden crear el mayor daño a la experiencia del usuario de una aplicación. Este aspecto puede aplicarse particularmente a las descargas de imágenes. De hecho, hay que tener en cuenta que no todos los usuarios tienen una conexión rápida a Internet a su disposición cada vez que utilizan nuestra aplicación. Esto afecta negativamente a la velocidad de descarga del contenido que necesita la aplicación. Incluso cuando la velocidad de la conexión a Internet no es un problema, puede ser desagradable consumir toda la cantidad de GB de Internet para reescribir el mismo contenido cada vez que se inicia la aplicación.

¿Qué se podría hacer para optimizar las peticiones de red que se hacen? Una de las soluciones más comunes es guardar en caché los datos que se han descargado para no tener que volver a descargar la misma información cada vez que se accede a ella. Este aspecto va bien con las imágenes. En esta guía me gustaría mostrarte cómo crear un sistema de cacheo de imágenes en Swift usando NSCache de Apple.

¿Qué es NSCache?

Apple define un objeto NSCache como una colección mutable que almacena un par clave-valor de forma similar a como lo hace un diccionario. La clase NSCache proporciona una interfaz programática para añadir y eliminar objetos y establecer políticas para borrar los datos almacenados en caché basándose en el número total de objetos que ya han sido almacenados.

Para hacer una larga historia corta, a diferencia de CoreData y UserDefaults, los datos que son almacenados en caché usando NSCache se borran cuando el sistema operativo requiere más espacio o ya no se usa.

Información preliminar

Para explicar cómo funciona el NSCache, les mostraré un ejemplo que utiliza URLSession para descargar imágenes. Es importante mencionar que URLSession es efímero. Creo que es importante mencionar aquí, en el ejemplo que estoy usando, que la URLSession es efímera. Efímero significa ser fugaz o de corta duración. URLSession se almacena en la RAM en lugar de en el disco. Estos datos se borran automáticamente cuando la sesión termina. Por esta razón, es esencial construir un sistema de caché para todos los datos no volátiles que deben ser descartados después de una solicitud de red.

Cómo usar NSCache para almacenar imágenes en Swift

Iniciar Xcode y crear un nuevo proyecto. Crear un nuevo archivo Swift y llamarlo, por ejemplo, ImageService. Este será el archivo que contendrá la clase que manejará las peticiones de red de imágenes y administrará su caché. Dentro de este nuevo archivo, definir la clase ImageService y definir una nueva variable que manejará el cache.

Anteriormente les presenté NSCache como un sistema de diccionario en funcionamiento. La forma en que definimos la variable imageCache, vamos a cachear las imágenes asociándolas a una cadena. Esto significa que cada vez que queramos acceder a la imagen almacenada tendremos que llamarla de nuevo a través de la cadena que está asociada a ella.

Una buena clave para el cacheo de imágenes es la URL desde la que se descarga la imagen. De esta manera podemos hacer una rápida comprobación antes de iniciar la petición de red. Si los datos existen en la caché, entonces podemos evitar solicitarlos al servidor.

En este punto podemos pasar a definir el siguiente método:

func downloadImage(url: URL, finalización: @escaping(UIImage?,Error?) -----; Void)

Esta función acepta un URL para devolver un UIImage a través de una llamada de retorno. Como se mencionó anteriormente, vamos a comprobar la imagen en caché a través de la URL de los datos en formato de cadena. Podemos obtener estos datos usando el método de absoluteString de URL y luego realizar el lanzamiento de String a NSString.

Usar la clase NSCache para almacenar datos es muy simple. En nuestro caso específico lo hemos usado para guardar los datos de la imagen. Nada le prohíbe explotar el potencial de NSCache para almacenar otros tipos de datos también. Hágame saber lo que piensa de esta solución para crear un sistema de almacenamiento de imágenes en Swift. Si tienes alguna duda o sugerencia, puedes escribirnos a través de la sección de comentarios presente al final de estos artículos.

Carlos Velasco Canohttps://digitaldesarrollos.com/
Soy investigador informático en la Universidad de Madrid. Empecé a escribir aquí y no he encontrado una razón para dejar de hacerlo. He escrito sobre Windows desde 2016.

Dejar respuesta

Please enter your comment!
Please enter your name here

Más Populares

Como cambiar permisos de archivos en linux

Cómo cambiar los permisos delos permisos de los directorios en Linux Para cambiar los permisos de los directorios en Linux, utilice lo siguiente chmod +rwx nombredelarchivo...

Activar wifi linux terminal

En este tutorial, vamos a aprender a conectarnos a la red Wi-Fi desde la línea de comandos en el servidor y el escritorio de...

Cómo instalar el VN ROM en el Galaxy Note 3 SM-N900 con temas de estilo S5

Esta guía te ayuda a descargar e instalar VN ROM en Galaxy Note 3 smartphone Android con procesador Exynos. Esta es una ROM personalizada...

Modificar la fecha de creación del archivo en Windows y Mac

Cuando escribimos un documento o editamos una imagen en el ordenador, la fecha de creación, así como la fecha de la última modificación, son...

Comentarios Recientes