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")) // falseEjemplo 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")) // falseEjemplo 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( También en la biblioteca
PDFKit para JavaScript (Node.js): guía completa con ejemplos
Monitoreo de aplicaciones C++: biblioteca metrics para recopilación de métricas
Generación de Swagger/OpenAPI en Kotlin: herramientas y ejemplos
Cliente HTTP para Kotlin: Las mejores bibliotecas para trabajar con la red