Menu
Coddy logo textTech

Hoja de Trucos de Swift

Última actualización

Hola Mundo y conceptos básicos

Swift no necesita código repetitivo a nivel superior: una sola línea se ejecuta.

OperaciónSintaxis
Imprimir una líneaprint("Hello, World!")
Imprimir sin salto de líneaprint("Hi", terminator: "")
Interpolación de cadenasprint("Hi \(name)")
Comentario// this is a comment
Comentario de varias líneas/* ... */
Importar un móduloimport Foundation
Ejecutar un archivoswift run o swift main.swift

Variables (let / var) y tipos

Usa let para constantes y var para valores mutables; los tipos suelen inferirse.

OperaciónSintaxis
Constantelet age = 30
Variablevar count = 0
Tipo explícitolet name: String = "Ada"
Tipos básicosInt, Double, String, Bool, Character
Conversión de tipoDouble(i), String(n), Int("42")
Tuplalet pair = (1, "a")
Alias de tipotypealias ID = Int
Comprobar el tipovalue is String, value as? String

Opcionales

Los opcionales modelan la posible ausencia de un valor; desenvuélvelos antes de usarlos.

OperaciónSintaxis
Declarar un opcionalvar name: String? = nil
Enlace de opcionalif let n = name { ... }
Desenvolver con guardguard let n = name else { return }
Fusión de nuloslet n = name ?? "default"
Encadenamiento de opcionalesuser?.address?.city
Desenvolver forzado (inseguro)name!
Desenvuelto implícitamentevar name: String!
Mapear sobre un opcionalname.map { $0.count }

Cadenas

Las cadenas son tipos de valor con soporte completo de Unicode.

OperaciónSintaxis
Longituds.count
Mayúsculas / minúsculass.uppercased(), s.lowercased()
Concatenar"foo" + "bar"
Interpolación"Total: \(price)"
Contienes.contains("ell")
Tiene prefijo / sufijos.hasPrefix("he")
Dividirs.split(separator: ",")
Reemplazars.replacingOccurrences(of: "a", with: "b")
Cadena de varias líneas""" ... """

Colecciones (Array, Dictionary, Set)

Tres tipos de colección principales, todos tipos de valor.

OperaciónSintaxis
Literal de arrayvar nums = [1, 2, 3]
Añadirnums.append(4)
Acceder / contarnums[0], nums.count
Map / filternums.map { $0 * 2 }, nums.filter { $0 > 1 }
Literal de diccionariovar ages = ["Ada": 30]
Acceso al diccionarioages["Ada"] devuelve un opcional
Literal de conjuntovar ids: Set = [1, 2, 3]
Insertar en un conjuntoids.insert(4)
Iterar un diccionariofor (k, v) in ages { ... }

Control de flujo

Las condiciones no necesitan paréntesis; switch debe ser exhaustivo.

OperaciónSintaxis
If / elseif x > 0 { ... } else { ... }
Ternariolet r = x > 0 ? "pos" : "neg"
Switchswitch n { case 1: ...; default: ... }
Switch con rangocase 1...5: ...
Bucle for-infor i in 0..<10 { ... }
For-in sobre un arrayfor item in items { ... }
Bucle whilewhile x < 100 { ... }
Repeat-whilerepeat { ... } while x < 100
Break / continuebreak, continue

Funciones y closures

Las funciones tienen parámetros con etiqueta; los closures son bloques de código autocontenidos.

OperaciónSintaxis
Definir una funciónfunc add(a: Int, b: Int) -> Int { a + b }
Etiqueta externafunc greet(to name: String) { ... }
Parámetro por defectofunc greet(name: String = "World") { ... }
Parámetro variádicofunc sum(_ nums: Int...) -> Int { ... }
Varios retornos (tupla)func bounds() -> (min: Int, max: Int) { ... }
Expresión de closurelet f = { (x: Int) -> Int in x * x }
Closure finalnums.map { $0 * 2 }
Argumentos abreviados{ $0 + $1 }

Structs vs clases

Los structs son tipos de valor (se copian); las clases son tipos de referencia (se comparten).

OperaciónSintaxis
Definir un structstruct Point { var x: Int; var y: Int }
Definir una claseclass Person { var name: String }
Inicializador de claseinit(name: String) { self.name = name }
Crear una instancialet p = Point(x: 1, y: 2)
Método mutating de structmutating func move() { x += 1 }
Método de clasefunc greet() { ... }
Herencia (solo clases)class Student: Person { ... }
Propiedad calculadavar area: Int { width * height }
Miembro estáticostatic let shared = Manager()

Enums

Los enums agrupan valores relacionados y pueden llevar datos asociados.

OperaciónSintaxis
Definir un enumenum Direction { case north, south }
Usar un casolet d = Direction.north
Switch sobre un enumswitch d { case .north: ... }
Valores brutosenum Status: Int { case ok = 200 }
Acceder al valor brutoStatus.ok.rawValue
Inicializar desde el valor brutoStatus(rawValue: 200)
Valores asociadoscase result(Int, String)
Métodos en enumsfunc label() -> String { ... }

La sintaxis de Swift que más usas, en una sola página. Esta hoja de trucos de Swift es una referencia rápida para el núcleo del lenguaje: constantes y variables, opcionales, cadenas, colecciones, control de flujo, funciones y closures, además de los structs, las clases y los enums con los que construyes apps de iOS y macOS.

Todo lo que hay aquí es Swift estándar y se compila con la cadena de herramientas oficial. Copia lo que necesites o prueba cada fragmento en vivo en el playground de Swift, sin necesidad de Xcode.

Preguntas frecuentes sobre la hoja de trucos de Swift

¿Esta hoja de trucos de Swift es gratis?
Sí. Esta hoja de trucos de Swift es completamente gratuita, sin necesidad de registrarse. Guárdala en favoritos y vuelve cuando necesites consultar un patrón de opcional, la sintaxis de un closure o un método de colección.
¿Cómo desenvuelvo un opcional en Swift?
Un opcional puede contener un valor o nil, así que lo desenvuelves antes de usarlo. Las formas seguras son el enlace de opcional (if let n = name { ... }), un guard let al inicio de una función, el operador de fusión de nulos (name ?? "default") y el encadenamiento de opcionales (user?.name). El desenvolvimiento forzado con name! funciona pero falla si el valor es nil, así que recurre a él solo cuando estés seguro.
¿Cuál es la diferencia entre un struct y una clase en Swift?
Un struct es un tipo de valor: asignarlo o pasarlo crea una copia, así que los cambios no afectan al original. Una class es un tipo de referencia: las copias comparten la misma instancia, y solo las clases admiten herencia. La recomendación de Apple es preferir structs por defecto y usar una clase cuando necesites estado mutable compartido o herencia.
¿Puedo practicar Swift en línea?
Sí. Abre el playground de Swift para ejecutar cualquier fragmento de esta hoja de trucos en tu navegador, sin instalar Xcode. Cuando quieras estructura, el curso interactivo y gratuito de Swift de Coddy te lleva paso a paso desde los opcionales y las colecciones hasta los structs, las clases y los enums.
¿Esta hoja de trucos es buena para principiantes?
Sí. Está organizada desde los temas más comunes (variables, opcionales, control de flujo) hasta los avanzados (closures, structs vs clases, enums), de modo que puedes usar las secciones de arriba desde el primer día e ir avanzando hacia el resto.
Coddy programming languages illustration

Aprende Swift con Coddy

COMENZAR