No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19 Días
18 Hrs
46 Min
49 Seg

Diccionarios

11/25
Recursos

¿Cómo trabajar con datos complejos usando mapas en Swift?

En el mundo del desarrollo de software, es esencial aprender a manejar tipos de datos más complejos para representar entidades de manera efectiva. Por ejemplo, en una tienda virtual, un producto debe incluir información como el nombre, precio, stock, descripción, reseñas, entre otros. Para este propósito, Swift ofrece una poderosa estructura de datos conocida como diccionarios o mapas, que nos permite modelar estas entidades de manera organizada, asignando una “llave” a cada valor correspondiente.

¿Cómo se declara un mapa en Swift?

Para comenzar a trabajar con mapas, lo primero que debes aprender es cómo declararlos. Por ejemplo, si deseas crear un mapa en Swift, la declaración sería la siguiente:

var mapa: [String: Any] = [
    "key1": "value1",
    "key2": "value2", 
    "key3": 12
]
  • Llaves y valores: Un mapa se compone de pares, donde cada llave está asociada a un valor. Las llaves suelen ser Strings, pero los valores pueden ser de diferentes tipos. Si los valores son variados, se usa Any para definir como tipo de valor.
  • Tipos de dato explícitos: A diferencia de arreglos donde los tipos de datos son homogéneos, en los mapas puedes encontrar datos de tipos diferentes, por lo cual deberás especificar el tipo cuando los definas como Any.

¿Cómo modelar un producto con un diccionario en Swift?

Imaginemos que quieres modelar un producto. Aquí está cómo puedes hacerlo usando un mapa:

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

¿Cómo acceder y modificar los valores de un diccionario?

Para acceder a un valor en el diccionario, usas su llave. También, puedes utilizar as para asegurarte de que el tipo es el adecuado:

if let nombreProducto = producto["nombre"] as? String {
    print("Nombre del producto: \(nombreProducto)")
}

Modificar los valores es igualmente sencillo:

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

¿Cómo agregar y eliminar llaves de un mapa?

Agregar datos:

producto["calificacion"] = 5

Eliminar datos es directo:

  • Usando la función removeValue(forKey:):

    producto.removeValue(forKey: “promocion”)

  • Asignando nil directamente a una llave:

    producto[“stock”] = nil

  • Eliminando todos los valores:

    producto.removeAll()

Desafío de práctica

A continuación, se te plantea un pequeño reto para reforzar tu aprendizaje:

Escribe una función que calcule la cantidad de habitantes para un país dado y retorne la siguiente frase: “En [nombre del país] hay [cantidad de habitantes] habitantes.” En caso de que no se disponga de información, retorna “No tengo datos suficientes para una respuesta esclarecedora.”

Aquí tienes un ejemplo de configuración inicial:

let habitantesPorPais: [String: Int] = [
    "Argentina": 45195777,
    "México": 126190788,
    "Brasil": 211000000
]

func getHabitantesPorPais(pais: String) -> String {
    // Código de la función
}

Aportes 2

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

**let** populationByCountry: \[String: Int] = \[ "Colombia": 48\_000\_000, "France": 67\_000\_000, "Germany": 83\_000\_000, "Spain": 46\_000\_000, "Italy": 60\_000\_000, "China": 1\_400\_000\_000 ] **func** getPopulationByCountry(country: String) -> String { **return** populationByCountry.keys.contains(country) ? "'\\(country)' -> \\(populationByCountry\[country]!)" : "I don't have enough data for a definitive answer." } print(getPopulationByCountry(country: "Colombia")) print(getPopulationByCountry(country: "United States")) print(getPopulationByCountry(country: "China"))
```js let populationByCountry: [String: Int] = [ "Colombia": 48000000, "France": 67000000, "Germany": 83000000, "Spain": 46000000, "Italy": 60000000, "China": 1400000000 ] func getPopulationByCountry(country: String) -> String { return populationByCountry.keys.contains(country) ? "'\(country)' -> \(populationByCountry[country]!)" : "I don't have enough data for a definitive answer." } print(getPopulationByCountry(country: "Colombia")) print(getPopulationByCountry(country: "Mexico")) print(getPopulationByCountry(country: "China")) ```