Biblioteca estándar de Swift (iOS/macOS): revisión completa
La biblioteca estándar de Swift es un conjunto fundamental de tipos, protocolos y funciones sobre el que se construye todo el desarrollo para iOS, macOS, watchOS y tvOS. A diferencia de muchos lenguajes donde la biblioteca estándar es minimalista, Swift ofrece un rico conjunto de herramientas directamente "listas para usar". En este artículo, analizaremos en detalle los componentes clave de la biblioteca que se utilizan en el desarrollo diario.
Tipos de datos y protocolos principales
La base de la biblioteca la constituyen tipos primitivos y protocolos que garantizan la uniformidad en el trabajo con datos.
- Protocolos de igualdad y comparación:
Equatable,Comparable,Hashable— permiten comparar y generar hash de objetos. - Protocolos de representación:
CustomStringConvertible,CustomDebugStringConvertible— para la descripción textual de objetos. - Tipos básicos:
Int,Double,Bool,String,Character— redefinidos para máximo rendimiento.
// Ejemplo de uso de protocolosstruct Persona: Equatable, CustomStringConvertible { let nombre: String let edad: Int var description: String { return "\\(nombre), \\(edad) años" }}
let alicia = Persona(nombre: "Alicia", edad: 30)let bob = Persona(nombre: "Bob", edad: 25)print(alicia == bob) // falseprint(alicia) // "Alicia, 30 años"Colecciones: arrays, diccionarios y conjuntos
Swift proporciona tres tipos principales de colecciones, optimizadas para diferentes escenarios de uso.
Arrays (Array)
Colecciones ordenadas con acceso aleatorio. Soportan expansión y reducción dinámica.
var numeros: [Int] = [1, 2, 3, 4, 5]numeros.append(6)numeros.remove(at: 0)let filtrados = numeros.filter { $0 > 3 }print(filtrados) // [4, 5, 6]Diccionarios (Dictionary)
Colecciones no ordenadas de tipo "clave-valor". Las claves deben ser Hashable.
var capitales: [String: String] = [ "Rusia": "Moscú", "Francia": "París", "Japón": "Tokio"]capitales["Alemania"] = "Berlín"if let capitalRusia = capitales["Rusia"] { print("La capital de Rusia es \\(capitalRusia)")}Conjuntos (Set)
Colecciones no ordenadas de elementos únicos. Ideales para verificar pertenencia y operaciones matemáticas.
let conjuntoA: Set = [1, 2, 3, 4]let conjuntoB: Set = [3, 4, 5, 6]let interseccion = conjuntoA.intersection(conjuntoB)let union = conjuntoA.union(conjuntoB)print(interseccion) // [3, 4]print(union) // [1, 2, 3, 4, 5, 6]Trabajo con cadenas
Las cadenas en Swift son colecciones de caracteres Unicode, lo que hace que trabajar con internacionalización sea extremadamente sencillo.
- Índices de cadenas:
startIndex,endIndex,index(_:offsetBy:)— navegación segura por caracteres. - Interpolación:
"\\(variable)"— inserción de valores en una cadena. - Literales multilínea:
""" """— formato conveniente.
let saludo = "¡Hola, mundo!"let primerCaracter = saludo[saludo.startIndex] // "¡"let indice = saludo.index(saludo.startIndex, offsetBy: 7)let subcadena = saludo[indice...] // "mundo!"
// Interpolación y multilínealet nombre = "Swift"let descripcion = """El lenguaje \\(nombre) se utiliza para el desarrolloen iOS y macOS."""print(descripcion)Tipos opcionales y trabajo con nil
Swift ofrece un trabajo seguro con valores ausentes a través de tipos opcionales. Esta es una de las características clave del lenguaje.
var nombreOpcional: String? = "Alejandro"// Optional También en la biblioteca
Registro en Swift (iOS/macOS): SwiftyBeaver, XCGLogger, OSLog
Cast para Go: guía completa con ejemplos prácticos
Configuración de aplicaciones Swift: librería SwiftyConfiguration