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

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): bibliotecas, herramientas y ejemplos prácticos



La validación de datos es uno de los aspectos clave en el desarrollo de aplicaciones iOS y macOS de calidad. Sin una verificación confiable de los datos ingresados, el usuario puede enfrentarse a errores, comportamientos incorrectos de la interfaz o incluso fallos. En este artículo, exploraremos las mejores bibliotecas y enfoques para la validación de datos en Swift, además de proporcionar ejemplos concretos de código.



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

La validación permite:

  • Garantizar la corrección de los datos ingresados (email, teléfono, contraseña).
  • Prevenir errores en el lado del servidor.
  • Mejorar la experiencia del usuario mediante retroalimentación instantánea.
  • Aumentar la seguridad de la aplicación.


Bibliotecas populares para validación en Swift

Actualmente, existen varias bibliotecas probadas que simplifican la validación de datos:

  • Validated — biblioteca ligera con soporte para Combine y SwiftUI.
  • SwiftValidator — una de las primeras bibliotecas para validación de campos de texto.
  • Validator (de Adamwaite) — herramienta simple y flexible con múltiples reglas integradas.
  • Regex — no es una biblioteca, sino un mecanismo incorporado para trabajar con expresiones regulares, utilizado a menudo para validación.


Ejemplo 1: Validación de email con expresión regular

La forma más sencilla es usar NSRegularExpression o el método incorporado range(of:options:).

import Foundation

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

// Usoprint(isValidEmail("test@example.com")) // trueprint(isValidEmail("invalid-email")) // false


Ejemplo 2: Validación de contraseña (longitud, presencia de dígitos y caracteres especiales)

A menudo se requiere que la contraseña tenga al menos 8 caracteres, al menos un dígito y un carácter especial.

func isValidPassword(_ password: String) -> Bool {    // Mínimo 8 caracteres    guard password.count >= 8 else { return false }        // Verificar presencia de dígito    let digitRegex = ".*[0-9]+.*"    let digitPredicate = NSPredicate(format: "SELF MATCHES %@", digitRegex)    guard digitPredicate.evaluate(with: password) else { return false }        // Verificar presencia de carácter especial    let specialCharRegex = ".*[!@#$%^&*()_+\\\\-=\\\\[\\\\]{};':\\"\\\\\\\\|,./<>?]+.*"    let specialPredicate = NSPredicate(format: "SELF MATCHES %@", specialCharRegex)    guard specialPredicate.evaluate(with: password) else { return false }        return true}

print(isValidPassword("Pass123!")) // trueprint(isValidPassword("weak")) // false


Ejemplo 3: Uso de la biblioteca Validator (Adamwaite)

La biblioteca Validator proporciona una sintaxis conveniente para cadenas de reglas.

import Validator

let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard, error: "Email inválido")let emailResult = "user@domain.com".validate(rule: emailRule)

switch emailResult {case .valid: print("Email válido")case .invalid(let errors): print("Error: \\(errors.first?.message ?? "")")}


Ejemplo 4: Validador personalizado para verificar la edad

A veces es necesario comprobar que el usuario es mayor de cierta edad.

struct AgeValidator {    static func isValid(age: Int) -> Bool {        return age >= 18 && age <= 120    }}

// Usolet userAge = 25if AgeValidator.isValid(age: userAge) { print(

Recommendations