Validación de datos en Swift (iOS/macOS): herramientas y práctica

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Validación de datos en Swift (iOS/macOS): revisión de herramientas y bibliotecas

La validación de datos es uno de los aspectos clave en el desarrollo de aplicaciones móviles y de escritorio de calidad en Swift. Permite garantizar que los datos ingresados por el usuario cumplan con el formato esperado y las reglas de negocio. En este artículo, analizaremos los enfoques principales, los mecanismos integrados y las bibliotecas populares para la validación en el ecosistema de Apple.



¿Por qué es importante la validación?

Sin validación, la aplicación corre el riesgo de recibir datos incorrectos, lo que puede provocar:

  • Errores en el funcionamiento del backend
  • Fallos inesperados (crash) en el lado del cliente
  • Vulnerabilidades de seguridad (inyección SQL, XSS)
  • Mala experiencia de usuario


Capacidades integradas de Swift y Foundation

Swift y el framework Foundation proporcionan herramientas básicas pero potentes para la validación.



1. Validación con NSPredicate

NSPredicate es una herramienta potente para filtrar y validar datos. Soporta expresiones regulares, lo que lo hace útil para validar email, teléfonos y otras cadenas.

import Foundation

func isValidEmail(_ email: String) -> Bool { let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,64}" let predicate = NSPredicate(format:"SELF MATCHES %@", emailRegEx) return predicate.evaluate(with: email)}

// Ejemplo de usolet testEmail = "user@example.com"print(isValidEmail(testEmail)) // true


2. Validación con NSRegularExpression

Para escenarios más complejos, es conveniente usar NSRegularExpression.

func isValidPassword(_ password: String) -> Bool {    // Mínimo 8 caracteres, una mayúscula, una minúscula, un dígito    let passwordRegex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)[a-zA-Z\\\\d]{8,}$"    do {        let regex = try NSRegularExpression(pattern: passwordRegex)        let range = NSRange(location: 0, length: password.utf16.count)        return regex.firstMatch(in: password, options: [], range: range) != nil    } catch {        return false    }}

print(isValidPassword("Swift1234")) // trueprint(isValidPassword("swift123")) // false (sin mayúscula)


Bibliotecas populares para validación

Aunque las herramientas integradas son suficientes para tareas simples, para formularios complejos con múltiples reglas es más conveniente usar bibliotecas especializadas.



1. Validator (de Adam Waite)

Una de las bibliotecas más populares para la validación de cadenas en Swift. Soporta cadenas de reglas (chain validation) y validadores personalizados.

// Instalación con SPM: .package(url: "https://github.com/adamwaite/Validator.git", from: "3.0.0")import Validator

let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard, error: "Email incorrecto")let nameRule = ValidationRuleLength(min: 2, max: 50, error: "El nombre debe tener entre 2 y 50 caracteres")

let email = "test@mail.ru"let result = email.validate(rule: emailRule)switch result {case .valid: print("Email válido")case .invalid(let errors): print(errors.first?.message ?? "Error")}


2. SwiftValidators (de gkaimakas)

Biblioteca ligera con sintaxis declarativa. Ideal para la validación de campos en tiempo real.

import SwiftValidators

let phone = "+7 (999) 123-45-67"if Validator.isPhoneNumber().trim().validate(phone) { print("Teléfono válido")} else { print("Formato incorrecto")}


Validación en SwiftUI con Combine

Las aplicaciones modernas en SwiftUI suelen usar Combine para la validación reactiva. Esto permite mostrar errores al instante, a medida que se escribe.

import SwiftUIimport Combine

class RegistrationViewModel: ObservableObject { @Published var email = "" @P

Recommendations