0Pricing
Swift Academy · Lección

Colecciones

Colecciones

Colecciones es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 1. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 1 lecciones en total.

Introducción

Hola:

En esta lección aprenderemos sobre los tipos de colecciones en Swift, uno de los temas más importantes.

Comencemos.

En Swift hay 3 tipos de colecciones.

Array → Tipos de colecciones secuenciales.

Set → Tipos de colecciones sin orden y con elementos únicos.

Dictionary → Tipos de colecciones sin orden y en pares clave-valor.

Mutable - inmutable

Que nuestros tipos de colección sean inmutables o mutables depende de cómo los definamos.

Si lo definimos con una instrucción let, será inmutable, mientras que será mutable si lo definimos con var.

Si el valor que definimos no va a cambiar después, utilizar let proporcionará una ventaja de rendimiento al permitir que el compilador funcione de forma más optimizada.

Array

Array

Array es el tipo de colección que se utiliza para mantener los datos en secuencia. Desde la versión 3 de Swift, no es necesario que todos los elementos de un array sean del mismo tipo.

La sintaxis de una definición sencilla de Array se muestra en el ejemplo siguiente.

// Let's create an empty array.
var someInts = [Int]()
print("someInts is of type [Int] with \(someInts.count) items.")
// Prints "someInts is of type [Int] with 0 items."

Crear un array con un valor predeterminado

Crear un array con un valor predeterminado

En algunos casos, es posible que queramos crear un array con un valor predeterminado y un tamaño específico. Para ello, debemos pasar dos argumentos al inicializador Array.

Estos argumentos especifican cuál es el valor predeterminado y cuántos elementos tendrá el array.

var threeDoubles = Array(repeating: 0.0, count: 3)
print(threeDoubles)
// threeDoubles is of type [Double], and equals [0.0, 0.0, 0.0]

var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
// anotherThreeDoubles is of type [Double], and equals [2.5, 2.5, 2.5]
print(anotherThreeDoubles)

var sixDoubles = threeDoubles + anotherThreeDoubles
print(sixDoubles)
// sixDoubles is inferred as [Double], and equals [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

Crear un Array mediante un literal de Array

Crear un Array mediante un literal de Array

En el ejemplo anterior aprendimos a crear un Array vacío. Sin embargo, en algunos casos podemos querer crear un Array con un literal de Array.

Aprendamos a utilizarlo con el ejemplo.

/*
We have defined a variable named catList, 
and with the [String] statement we specified 
that its type is an Array containing String elements.
*/
var catList: [String] = ["Garfield", "Tom"]
print(catList)
/*
It will understand that the array is an Array containing
String statements, since we assign a value that 
defines the variable. (Swift type inference)
*/
var shoppingList = ["Eggs", "Milk"]
print(shoppingList)

Acceder al valor de un array

Acceder al valor del array

Cuando queremos acceder al elemento de un índice determinado en una secuencia, basta con llamarlo usando la siguiente sintaxis.

myArray [index]

Veamos el ejemplo.

// We have defined an array with 3 elements of type Int.
var numbers:[Int] = [1, 5, 21]

// Arrays start from Index 0. For example, in order to reach the value 5, which is the 2nd element, we need to access the 1st index.
var a = numbers[1]
print( "Value of numbers at index 1 is \(a)" )

Añadir nuevos elementos al Array

Añadir nuevos elementos al Array

Podemos añadir un nuevo elemento a un Array. 

En el ejemplo siguiente, se define un Array llamado catList. En el paso siguiente, se ha añadido un nuevo elemento a este Array con el método append. 

// The Array named catList was defined with 1 initial element.
var catList = ["Tom"]


/*
We are adding a new item with a Garfield 
value using the append method.
*/
catList.append("Garfield")
// Our array will now have 2 elements.


/*
With the + = operator, we can do the 
work that the append method does.
*/
catList += ["Sylvester"]

Añadir datos en un índice específico del array

Añadir datos en un índice específico del array

El valor que añadimos con el método append en el ejemplo anterior se agregará al final del array. Sin embargo, a veces podemos querer añadirlo en un índice específico. Para ello utilizaremos el método insert.

La sintaxis será así.

myArr.insert ("The data to add", at: index);

Descubrámoslo con un ejemplo.

var catList = ["Tom"]

catList.insert("Garfield", at: 1)

print(catList)

Eliminar un elemento específico del array

Eliminar un elemento específico del array

El método remove se utiliza para eliminar un elemento situado en un índice determinado de un array.

var shoppingList = ["Apple", "Cherry", "Cheese"]

let shoppingListOne = shoppingList.remove(at: 0)
// the item that was at index 0 has just been removed
// the mapleSyrup constant is now equal to the removed "Maple Syrup" string

let shoppingListTwo = shoppingList.removeLast()
// the last item in the array has just been removed

print(shoppingListTwo)

Iteración de arrays

Podemos iterar un array que tenemos mediante for-in.

Veamos el ejemplo.

var shoppingList = ["Banana", "Orange", "Milk"]

for item in shoppingList {
    print(item)
}
// Six eggs
// Milk
// Flour
// Baking Powder
// Bananas

for (index, value) in shoppingList.enumerated() {
    print("Item \(index + 1): \(value)")
}
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
// Item 4: Baking Powder
// Item 5: Bananas

Conjuntos

Conjuntos

Se utilizan para mantener juntas colecciones del mismo tipo sin ningún orden.

Como se puede entender por el nombre, son conjuntos. Además, no puede haber dos elementos con el mismo valor en un conjunto.

Creación de un conjunto vacío

Utilizamos el siguiente ejemplo para crear un conjunto vacío.

var catSet = Set<Character>()

Creación de conjuntos mediante un literal de array

Creación de conjuntos mediante un literal de array

Se puede utilizar un literal de array para crear un conjunto. Tenga en cuenta que, aunque el valor asignado aquí parece un array, el tipo de la variable es Set <String>.

var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]

Advertencia

Al utilizar un literal de array, no es posible crear un conjunto sin definir un tipo. Puede interferir con Array. Por lo tanto, debemos definir el tipo. 

Como mínimo, deberíamos utilizarlo de la siguiente manera.

var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]

Métodos de Set

Métodos de Set

Veamos el ejemplo.

var favoriteGenres = ["Funk"]

print("I have \(favoriteGenres.count) favorite music genres.")

if favoriteGenres.isEmpty {
    print("favoriteGenres is empty")
} else {
    print("I have particular music preferences.")
}

if favoriteGenres.contains("Funk") {
    print("Funk")
} 

Iteración de un Set

Iteración de un Set

El tipo Set de Swift no tiene un orden. Sin embargo, se puede utilizar el método sorted al iterar sobre un valor de tipo Set. Este método convierte los elementos del conjunto en un array ordenado.

let favoriteGenres = ["Classical","Jazz", "Hip hop"]

for genre in favoriteGenres {
    print("\(genre)")
}
// Classical
// Jazz
// Hip hop

Diccionario

Diccionario

Son tipos de colección que almacenan valores como pares clave-valor y no mantienen ningún orden.

Cada valor se almacena con una clave única. Esta representa el identificador de ese valor en el diccionario. No contiene una secuencia como los arrays. Podemos imaginarlo como un diccionario del mundo real.

Por lo tanto, la identidad de cada valor es más importante que su posición.

El tipo Dictionary se puede definir mediante la forma abreviada [Key: Value]. Se prefiere utilizar esta forma abreviada.

var namesOfIntegers = [Int: String]()
// namesOfIntegers is an empty [Int: String] dictionary

namesOfIntegers[16] = "sixteen"
// namesOfIntegers now contains 1 key-value pair
namesOfIntegers = [:]
// namesOfIntegers is once again an empty dictionary of type [Int: String]

Métodos de acceso al diccionario

Podemos averiguar cuántos elementos contiene un diccionario mediante el método count.

Además, podemos comprobar si el diccionario está vacío con el método isEmpty.

Veamos algunos ejemplos de estos métodos.

var airports = ["LHR": "London", "IST": "Istanbul"]

print("The airports dictionary contains \(airports.count) items.")
// Prints "The airports dictionary contains 2 items."

if airports.isEmpty {
    print("The airports dictionary is empty.")
} else {
    print("The airports dictionary is not empty.")
}
// Prints "The airports dictionary is not empty."

airports["LHR"] = "London"
// the airports dictionary now contains 3 items

Subíndice

El proceso para obtener un valor mediante un subíndice es el siguiente. El resultado es opcional.

var airports = ["DUB":"Dublin"]

if let airportName = airports["DUB"] {
    print("The name of the airport is \(airportName).")
} else {
    print("That airport is not in the airports dictionary.")
}
// Prints "The name of the airport is Dublin Airport."



//Deletion
airports["APL"] = nil

if let removedValue = airports.removeValue(forKey: "DUB") {
    print("The removed airport's name is \(removedValue).")
} else {
    print("The airports dictionary does not contain a value for DUB.")
}
// Prints "The removed airport's name is Dublin Airport."

Actualización de un diccionario

Además de utilizar el subíndice anterior, existe un método para actualizar el diccionario.

La característica de este método es que, después de realizar la actualización, devuelve el valor anterior.

var airports = ["DUB": "Dublin"]

if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {
    print("The old value for DUB was \(oldValue).")
}
// Prints "The old value for DUB was Dublin."

Ejemplo de conversión de Dictionary a Array

A continuación se muestra un ejemplo de conversión de Dictionary a Array.


let airports = ["IST":"Istanbul Airport", "DUB":"Dublin Airport"]

let airportCodes = [String](airports.keys)
print(airportCodes)

let airportNames = [String](airports.values)
print(airportNames)

Enhorabuena

Enhorabuena 🎉

En esta lección aprendimos a utilizar colecciones en Swift.

Nos vemos en la próxima lección.

Colecciones — ilustración 22

Preguntas frecuentes

¿La lección «Colecciones» es gratis?

Sí — el texto completo de «Colecciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 1 lecciones en total.

¿Qué aprenderé en «Colecciones»?

Colecciones Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 1.

¿Cuánto tiempo toma la lección «Colecciones»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

← Volver a Swift Academy