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

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): cómo elegir la herramienta adecuada y no equivocarse



La validación de datos es una de las etapas clave en el desarrollo de aplicaciones móviles y de escritorio en Swift. Sin ella, es imposible garantizar la corrección de la entrada del usuario, la seguridad de los datos y el funcionamiento estable de la aplicación. En este artículo, analizaremos bibliotecas y enfoques populares para la validación en el ecosistema de Apple, y proporcionaremos ejemplos de código para iOS y macOS.



¿Por qué es necesaria la validación de datos en Swift?

El usuario puede ingresar cualquier cosa: desde una cadena vacía hasta una inyección SQL. La validación ayuda a:

  • prevenir datos incorrectos (email sin @, contraseña de menos de 8 caracteres);
  • proteger la aplicación de ataques (XSS, inyecciones);
  • mejorar la UX — resaltar errores al instante;
  • cumplir con las reglas de negocio (por ejemplo, edad > 18 años).


Bibliotecas populares para validación en Swift

Aunque Foundation tiene herramientas básicas (NSPredicate, expresiones regulares), para escenarios complejos es mejor usar bibliotecas especializadas.



1. Validator (por eMKa)

Una de las bibliotecas de código abierto más populares. Admite validación de cadenas, números, fechas y reglas personalizadas.

// Instalación mediante SPM: https://github.com/eMKa/Validatorimport Validator

let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard)let result = "test@example.com".validate(rule: emailRule)switch result {case .valid: print("Email válido")case .invalid(let errors): print("Error: \\(errors.first?.message ?? "Error desconocido")")}

La biblioteca admite cadenas de reglas: "password123".validate(rules: [lengthRule, uppercaseRule, digitRule]). Ideal para formularios de registro.



2. SwiftValidator (por jpotts18)

Biblioteca ligera para validación de campos de entrada. Funciona con UIKit y SwiftUI. Permite definir reglas para cada campo de texto.

// Instalación: https://github.com/jpotts18/SwiftValidatorimport SwiftValidator

let validator = Validator()validator.registerField(emailTextField, rules: [RequiredRule(), EmailRule()])validator.registerField(passwordTextField, rules: [RequiredRule(), MinLengthRule(length: 8)])

validator.validate { errors in if errors.isEmpty { print("Todos los campos son válidos") } else { for (field, error) in errors { print("Error en \\(field): \\(error.errorMessage)") } }}

Excelente para formularios con muchos campos — permite gestionar la validación de forma centralizada.



3. Regex (solución integrada de Foundation)

Si no desea agregar dependencias externas, use NSRegularExpression. Adecuado para verificaciones simples.

func isValidEmail(_ email: String) -> Bool {    let pattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,64}"    let regex = try? NSRegularExpression(pattern: pattern)    let range = NSRange(location: 0, length: email.utf16.count)    return regex?.firstMatch(in: email, range: range) != nil}

// Usoif isValidEmail("user@example.com") { print("Email válido")} else { print("Formato de email incorrecto")}

Desventaja: difícil de mantener y ampliar. Para proyectos grandes, es mejor usar bibliotecas.



4. ValidatedPropertyKit (de la comunidad)

Enfoque moderno que utiliza property wrappers. Permite anotar propiedades del modelo directamente.

// Instalación: https://github.com/SvenTiigi/ValidatedPropertyKitimport ValidatedPropertyKit

struct User { @Validated(.nonEmpty, .email) var email: String @Validated(.minLength(8), .containsUppercase) var password: String}

var user = User()user.email = "test" // Error: email no válidouser.password = "weak" // Error: contraseña demasiado cortaprint(us

Recommendations