Académique Documents
Professionnel Documents
Culture Documents
Es decir, las colecciones de datos en Swift nos permiten agrupar datos u objetos de una manera
particular, ya sea como una lista de elementos únicos o repetidos, o simplemente una lista de
conjuntos.
Cuando trabajamos con arrays, sets y dictionaries siempre se tiene claro los tipos de
valores y las llaves que pueden almacenar. Esto significa que jamás podremos insertar
por error un valor de un tipo de dato que no sea el de la colección, al mismo tiempo que
nos brinda la seguridad sobre el tipo de valores que se van a recuperar de la misma.
Mutabilidad
Si crea un array, un set o un dictionary, y lo asigna a una variable, la colección que se crea
será mutable. Esto quiere decir que se puede cambiar (o mutar) la colección agregando,
eliminando o cambiando elementos de la misma. Si asigna una array, un set o un
dictionary a una constante, la colección será inmutable, y su tamaño y contenido no se
podrán cambiar.
Se considera una buena práctica crear colecciones inmutables en todos los casos en los
que la colección no vaya a ser modificada, ya que con esto le estamos permitiendo al
compilador de Swift optimizar el rendimiento de estas colecciones.
Array
Al igual que en otros lenguajes de programación, en Swift también contamos con los
Arreglos. En caso de que no se conozca de que estamos hablando, se podría decir que un
array o arreglo es un conjunto de datos de un mismo tipo ordenados de forma lineal.
Los componentes de un array se han de referenciar por medio del nombre del array y un
índice de desplazamiento para indicar el componente deseado.
Tengamos en cuenta que el tipo de la variable someInts se infiere a partir del tipo de dato
con el que la inicializamos.
la salida en pantalla:
o esta otra versión donde Swift infiere el tipo de dato que conforma el Array:
Por ejemplo, puede crear un Array tridimensional de números enteros utilizando tres
conjuntos de corchetes:
var array3D: [[[Int]]] = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
Esto significa que en el ejemplo anterior, array3D [0] se refiere a [[1, 2], [3, 4]], array3D
[0] [1] se refiere a [3, 4], y array3D [0] [1 ] [1] se refiere al valor 4.
myBucketList.append("volar en globo.")
myBucketList.append("bucear en las Islas Galápagos.")
myBucketList.append("saltar en paracaidas.")
} // for
myBucketList.remove(at: 0)
print("")
} // for
Set
Romario Fabian Lopez Santos 8ª 16011891 Desarrollo de Aplicaciones Móviles 2
Un Set almacena valores distintos de un mismo tipo en una colección sin orden definido,
ya lo se, lo que intento decir es que un Set de tipo String solamente almacenará cadenas
de texto y ninguna de estas podrán ser iguales, todas cadenas donde sus valores no
podrán repetirse, tiene que ser únicos.
Usualmente se hace uso de un Set en lugar de un Array cuando el orden de los elementos
no sea importante, o cuando es necesario asegurarse de que un artículo sólo aparece una
sola vez.
la salida en pantalla:
Aquí hemos inicializado nuestro Set con tres valores de cadena (“Rock”, “Clásica” y “Hip
hop”), estos escritos dentro de un Array literal.
La línea del ejemplo anterior también pudo haberse escrito de la siguiente forma:
…el tipo de dato String es inferido por Swift dado los valores con los que se ha
iniclializado el Set en cuestión.
Podemos agregar un nuevo elemento a un Set haciendo una llamada al método insert(_:):
generosFavoritos.insert("Jazz")
Por otra parte, todos los elementos de un Set se pueden eliminar con el método
removeAll ().
} // if let
Uniones
Imaginemos que vamos de compras, a pos de algunas frutas para luego en casa preparar
un coctel:
print(food)
} // for
if groceryBag.contains("Platanos") {
} else {
} // else
pues nos falta comprar plátano, al mismo tiempo que advertimos la presencia de un
amiga que se encuentra también haciendo las compras, luego de una corta charla
acordamos terminar nuestras compras juntos y para ellos necesitamos ver todo cuanto
tenemos en ambas cestas para programar mejor el recorrido en búsqueda de los que a
ambos nos falta:
print(food)
} // for
if groceryBag.contains("Platanos") {
Romario Fabian Lopez Santos 8ª 16011891 Desarrollo de Aplicaciones Móviles 2
} else {
} // else
print(food)
} // for
Piñas
Naranjas
Manzanas
Cereal
Leche
Manzanas
Platanos
Piñas
Naranjas
En la línea 23 del anterior código hemos hecho uso del método union(_:) con la intención
de unir los dos Set y conformar uno nuevo de nombre combineGroceryBag a partir
de groceryBag y friendGroceryBag, conformando este nuevo por los elementos únicos
en ambos Sets.
Sustracciones
Otro método de la colección Set que creo merece la pena hacer mencionar sería aquel
que nos ayudaría ante la siguiente circunstancia:
Continuemos con la historia anterior, asumamos que cuando llegamos a casa nuestro
compañero de cuarto también se dirige hacia el mercado a hacer sus compras y también
a comprar frutas ya que este también desea preparar un coctel de frutas.
Dado el hecho de que somos compañeros de cuarto y que nosotros ya hemos comprado
varias frutas pues compararemos los productos en común que tiene nuestra lista de
compras y la de nuestro amigo, así este solamente tendría que comprar aquellos que no
hemos traído.
print(food)
} // for
Romario Fabian Lopez Santos 8ª 16011891 Desarrollo de Aplicaciones Móviles 2
la salida en pantalla:
Shampoo
Uvas
Pasta Dental
Para lograr esto último hemos hecho uso de el método substract el cual solamente nos
retorna aquellos elementos que no son comunes entre el Set que ejecuta el método y
aquel que es pasado como parámetro.
Al igual que Array, Set cuenta con muchos más métodos, muy útiles todos pero
imposibles de nombrar aquí, de hacerlo tornarían este tutorial excesivamente largo y
aburrido.
Dictionary
Un diccionario almacena asociaciones entre llaves y valores del mismo tipo en una
colección sin orden definido. Cada valor está asociado con una clave única, que actúa
como un identificador para ese valor dentro del diccionario.
El tipo de dato Dictionary es bastante útil y por ende bastante usado, su sintaxis es bien
sencilla: Dictionary<Key, Value> donde cada campo se estructuraría en la forma [llave
tipo: valor tipo], un ejemplo real luciría así:
aquí un ejemplo de un diccionario de llave tipo Int y valores de tipo Double, inicializado
con cero elementos. Pero también pudiéramos haberlo logrado de estas otras formas:
var myDictionary: [Int: Double] = [5: 0.25, 4: 0.20, 3: 0.15, 2: 0.12, 1: 0.10]
} // for
la salida en pantalla:
En este ejemplo tenemos un bucle de tipo for-in, donde por cada elemento en el
diccionario creamos una tupla cuyos tipos de datos son inferidos por el compilador dado
el diccionario con el que estemos trabajando.
Romario Fabian Lopez Santos 8ª 16011891 Desarrollo de Aplicaciones Móviles 2
Modificar el valor de una llave y eliminar la tupla por completo es igual de sencillo:
// Creamos el diccionario
var myDictionary: [Int: Double] = [5: 0.25, 4: 0.20, 3: 0.15, 2: 0.12, 1: 0.10]
print("")
} // for
print("")
print("")
myDictionary[3] = 2.55
} // for
Romario Fabian Lopez Santos 8ª 16011891 Desarrollo de Aplicaciones Móviles 2
print("")
print("")
myDictionary[3] = nil
} // for
var myDictionary: [Int: Double] = [5: 0.25, 4: 0.20, 3: 0.15, 2: 0.12, 1: 0.10]
} // for
la salida sería:
Nombre de la Llave: 5
Nombre de la Llave: 2
Nombre de la Llave: 4
Nombre de la Llave: 3
Nombre de la Llave: 1
En este ejemplo tenemos un diccionario del cual extraemos los nombre de sus llaves
mediante la propiedad computada de nombre keys, pasando estos datos al constructor
de Array el cual retorna una estructura ya inicializada a nuestro arreglo myKeys por el
cual luego iteramos sobre cada uno de sus elementos para poder visualizarlos en la salida
en pantalla.
Romario Fabian Lopez Santos 8ª 16011891 Desarrollo de Aplicaciones Móviles 2
Comparativa
Antes de finalizar les dejaré una tabla con una pequeña comparativa entre las
colecciones de datos aquí comentadas:
Array Sí No Elementos
REFERENCIAS
Apple Inc. (2019). The swift programming language. Obtenido de Swift docs:
https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html
Yahel, N. (Mayo de 2016). Collection Data Structures in Swift. Obtenido de
raywenderlich.com: https://www.raywenderlich.com/1172-collection-data-
structures-in-swift#toc-anchor-011