Curso de Swift para Apps iOS

Diccionarios en Swift para datos complejos

Curso de Swift para Apps iOS

Diccionarios en Swift para datos complejos

Resumen

Cuando trabajas con datos simples como un string o un número, basta con una variable. Pero al modelar entidades reales en Swift, como un producto de una tienda virtual, necesitas algo más potente: los diccionarios o mapas, una estructura que asocia llaves con valores y te permite organizar información compleja sin perder claridad.

¿Qué es un diccionario en Swift y para qué sirve?

Un diccionario en Swift es una colección de pares llave-valor que te permite acceder a la información usando una etiqueta descriptiva en lugar de un índice numérico. Piensa en un producto de e-commerce: no basta con su nombre, también necesitas precio, stock, descripción, reseñas y más. Un mapa te deja agrupar todo eso en una sola variable.

¿Cuál es la diferencia entre un arreglo y un diccionario en Swift? El arreglo guarda valores en orden y los accedes por índice numérico. El diccionario los guarda por llaves descriptivas como nombre o precio, lo que hace la lectura más clara cuando trabajas con entidades.

Cómo declarar un mapa con tipos mixtos

La sintaxis básica usa corchetes y dos puntos entre la llave y el valor [00:53]. Si todos los valores son del mismo tipo, Swift lo infiere. Pero si mezclas strings, números y booleanos, necesitas declarar explícitamente el tipo con [String: Any], donde Any indica que el valor puede ser de cualquier tipo [02:13].

swift var producto: [String: Any] = [ "id": 1, "nombre": "PC Lenovo", "precio": 1000, "stock": 10, "promocion": true ]

Fíjate en algo importante: cada par va separado por coma y la llave casi siempre es de tipo string, porque describe semánticamente la propiedad.

¿Cómo accedo a los valores de un diccionario en Swift?

Para obtener un valor, usas el nombre de la variable seguido de la llave entre corchetes. Por ejemplo, producto["nombre"] devuelve PC Lenovo, pero te lo entrega como opcional porque Swift no garantiza que esa llave exista [03:38].

Si declaraste el diccionario con valores Any, además debes hacer un cast al tipo concreto usando la palabra clave as. Aquí entra el unwrap que viste en la clase de opcionales:

swift var nombre = producto["nombre"] as! String print(nombre) // PC Lenovo

El operador as! le dice al compilador: confío plenamente en que este valor es un string. Si te equivocas con el tipo, la app crashea, así que úsalo solo cuando estés seguro.

Cómo agregar nuevas llaves a un diccionario

Agregar propiedades es directo: asignas un valor a una llave que aún no existe y Swift la crea por ti [04:32]. Imagina que llega un requerimiento nuevo y necesitas guardar la calificación del producto.

swift producto["calificacion"] = 5

Al imprimir el producto, verás la nueva llave junto con las anteriores. No necesitas redeclarar nada.

¿Cómo modifico o elimino valores en un mapa de Swift?

Modificar valores funciona con la misma notación que usas para crearlos. Si tu producto pasó de tener un stock de 10 a una sola unidad y la gerencia decide subir el precio de 1000 a 2000 dólares, basta con reasignar [05:21]:

swift producto["stock"] = 1 producto["precio"] = 2000

Para eliminar elementos tienes tres caminos según lo que necesites:

  • producto.removeValue(forKey: "promocion") elimina una llave específica.
  • producto["stock"] = nil también borra la llave asignándole valor nulo.
  • producto.removeAll() vacía el diccionario completo y te deja un mapa sin llaves ni valores [06:42].

¿Qué hace removeValue en un diccionario de Swift? Borra el par llave-valor que le indiques y devuelve el valor eliminado. Es la forma explícita y segura de quitar una propiedad sin afectar el resto del mapa.

Reto: cantidad de habitantes por país

Para cerrar, ponte a prueba con esta función. Tienes un diccionario [String: Int] donde la llave es el nombre del país y el valor es su cantidad de habitantes. Crea una función getHabitantesPorPais que reciba un país como parámetro y devuelva el mensaje: "En [país] hay [cantidad] habitantes".

Si el país no existe en el diccionario, debe retornar: "No tengo datos suficientes para una respuesta esclarecedora". Como pista, investiga cómo combinar las propiedades keys y contains para validar la existencia de la llave antes de acceder a su valor.

Cuéntame en los comentarios cómo lo resolviste y qué dificultades encontraste.