Las variables y constantes son espacios en memoria donde tu app guarda información mientras se ejecuta.
En Swift, toda información que tu app necesita recordar —un precio, un nombre, una cantidad— vive en una variable o constante. Entender la diferencia entre ambas es el primer paso para escribir código limpio y sin errores.
Variables vs. constantes: la diferencia clave
Una variable puede cambiar de valor después de declararse. Una constante nunca cambia después de asignarse.
Swift usa dos palabras clave para declararlas:
var→ variable (valor modificable)let→ constante (valor fijo)
Esta distinción no es solo estilo. Xcode te advertirá si declaras algo con var y nunca lo cambias. Esa advertencia te invita a usar let en su lugar.
Sintaxis básica
La estructura de una declaración en Swift sigue este patrón:
var nombreDeVariable: Tipo = valorInicial
let nombreDeConstante: Tipo = valorFijo
Swift también tiene inferencia de tipos. Si asignas un valor en la misma línea, Swift detecta el tipo automáticamente:
var precio = 299.0 // Swift infiere Double
let nombreTienda = "Liverpool" // Swift infiere String
var unidades = 5 // Swift infiere Int
No siempre necesitas escribir el tipo manualmente. Úsalo solo cuando necesites mayor claridad o cuando declares una variable sin valor inicial.
Tipos de datos más usados en iOS
| Tipo | Descripción | Ejemplo |
|---|---|---|
Int |
Número entero | 42, -10, 0 |
Double |
Número decimal | 19.99, 3.14 |
String |
Texto | "Bimbo", "CDMX" |
Bool |
Verdadero o falso | true, false |
Estos cuatro tipos cubren la mayoría de los casos en una app básica para iPhone.
Ejemplos prácticos con contexto mexicano
Ejemplo 1: Precio de un producto en Liverpool
Imagina que construyes una pantalla que muestra el precio de un artículo.
let nombreProducto: String = "Cafetera digital"
var precioProducto: Double = 1299.0
var descuento: Double = 150.0
precioProducto = precioProducto - descuento
print("Producto: \(nombreProducto)")
print("Precio final: $\(Int(precioProducto))")
Salida en consola:
Producto: Cafetera digital
Precio final: $1,149
nombreProducto usa let porque el nombre del artículo no cambia. precioProducto usa var porque aplicamos un descuento y el valor sí cambia.
Ejemplo 2: Contador de pedidos en Mercado Libre
Supón que tu app muestra cuántos pedidos tiene un vendedor en el día.
var pedidosDelDia: Int = 0
let metaDiaria: Int = 50
pedidosDelDia += 12
pedidosDelDia += 8
print("Pedidos completados: \(pedidosDelDia) de \(metaDiaria)")
Salida en consola:
Pedidos completados: 20 de 50
metaDiaria es constante porque la meta no cambia durante el día. pedidosDelDia es variable porque se actualiza con cada nuevo pedido.
Ejemplo 3: Cálculo de nómina para una app de RRHH
Una app de recursos humanos calcula el salario neto de un empleado de FEMSA.
let salarioBase: Double = 18500
let tasaIMSS: Double = 0.0275
var descuentoIMSS: Double = salarioBase * tasaIMSS
var salarioNeto: Double = salarioBase - descuentoIMSS
print("Salario base: $\(Int(salarioBase))")
print("Descuento IMSS: $\(Int(descuentoIMSS))")
print("Salario neto: $\(Int(salarioNeto))")
Salida en consola:
Salario base: $18,500
Descuento IMSS: $508
Salario neto: $17,991
Aquí salarioBase y tasaIMSS son constantes porque son datos fijos de entrada. Los resultados calculados usan var porque dependen de operaciones.
Reglas para nombrar variables y constantes
Swift usa la convención camelCase: la primera letra es minúscula y cada palabra siguiente empieza con mayúscula.
var nombreUsuario = "Ana" // ✅ correcto
var NombreUsuario = "Ana" // ❌ evitar (PascalCase es para tipos)
var nombre_usuario = "Ana" // ❌ evitar (estilo Python, no Swift)
Otras reglas importantes:
- Los nombres no pueden empezar con números:
var 1precioes inválido. - Los nombres son sensibles a mayúsculas:
precioyPrecioson diferentes. - Usa nombres descriptivos:
pes válido peroprecioProductoes mucho mejor.
Nombrar bien tus variables ahorra tiempo cuando revisas código semanas después.
Declarar sin valor inicial
Puedes declarar una variable sin asignarle valor de inmediato. Pero en ese caso, debes especificar el tipo porque Swift no puede inferirlo:
var ciudadEnvio: String
ciudadEnvio = "Guadalajara"
Si intentas usar ciudadEnvio antes de asignarle un valor, Xcode te mostrará un error. Swift exige que cada variable tenga un valor antes de usarse.
Interpolación de cadenas
La interpolación de cadenas te permite insertar el valor de una variable dentro de un texto con \():
let empresa = "Bimbo"
var empleados = 138000
print("\(empresa) tiene más de \(empleados) empleados en el mundo.")
Salida:
Bimbo tiene más de 138000 empleados en el mundo.
Esta técnica es fundamental para mostrar datos dinámicos en la interfaz de tu app.
Errores comunes
Error 1: Intentar modificar una constante
let impuesto = 0.16
impuesto = 0.08 // ❌ Error: cannot assign to value: 'impuesto' is a 'let' constant
Si el valor puede cambiar en algún momento, usa var. Si no, usa let.
Error 2: Mezclar tipos sin conversión
var precio: Int = 500
var iva: Double = 0.16
var total = precio * iva // ❌ Error: binary operator '*' cannot be applied to 'Int' and 'Double'
Swift no combina tipos automáticamente. Necesitas convertir explícitamente:
var total = Double(precio) * iva // ✅ correcto
Este es uno de los errores más frecuentes en principiantes que vienen de JavaScript o Python.
Error 3: Usar una variable antes de inicializarla
var ciudad: String
print(ciudad) // ❌ Error: variable 'ciudad' used before being initialized
Siempre asigna un valor antes de leer la variable. Si no tienes el valor todavía, asigna un valor vacío temporal:
var ciudad: String = ""
Error 4: Nombres con espacios o caracteres especiales
var nombre de usuario = "Ana" // ❌ inválido
var @nombre = "Ana" // ❌ inválido
var nombreUsuario = "Ana" // ✅ correcto
Los espacios rompen la declaración. Los caracteres especiales como @ o # están reservados por Swift.
var vs let: cuándo usar cada uno
| Situación | Usa |
|---|---|
| El valor cambiará durante la ejecución | var |
| El valor es fijo desde el inicio | let |
| Resultado de un cálculo que no cambia | let |
| Contador, acumulador, estado de pantalla | var |
| Configuración estática (tasa de IVA, nombre de empresa) | let |
La regla práctica es simple: empieza siempre con let. Solo cambia a var cuando Xcode te diga que el valor necesita modificarse.
Puntos clave
vardeclara una variable cuyo valor puede cambiar;letdeclara una constante cuyo valor es fijo.- Swift infiere el tipo automáticamente si asignas un valor al declarar la variable.
- Los cuatro tipos más usados en apps básicas son
Int,Double,StringyBool. - Usa camelCase para nombrar variables:
precioTotal,nombreUsuario,pedidosDelDia. - Siempre prefiere
letsobrevarcuando el valor no cambiará; tu código será más seguro y legible.