O que é validação de dados em Swift e por que ela é necessária?
Validação de dados é o processo de verificar dados de entrada quanto à conformidade com regras definidas. No desenvolvimento iOS/macOS, é crucial: desde a verificação de email e senha em um formulário de registro até a validação de uma resposta JSON do servidor. As ferramentas integradas do Foundation (NSPredicate, expressões regulares) são frequentemente complexas e inconvenientes para reutilização. Validator é uma biblioteca leve para Swift que permite descrever regras de validação de forma declarativa usando sintaxe encadeada (chainable syntax) e utilizá-las em qualquer lugar do projeto.
Como instalar a biblioteca Validator
Validator está disponível através do Swift Package Manager (SPM). Adicione em Package.swift ou através do Xcode: File → Add Packages → insira a URL do repositório:
https://github.com/adamwaite/ValidatorOu através do CocoaPods, se você o utiliza:
pod 'Validator'Principais funções da biblioteca
- Regras integradas: email, URL, string, número, comprimento, expressões regulares e muitas outras.
- Regras personalizadas: você pode criar qualquer validação implementando o protocolo
ValidationRule. - Validação de coleções: verificação de arrays, dicionários, valores opcionais.
- Erros legíveis por humanos: retorna mensagens de erro localizadas.
- Trabalho com UIKit/SwiftUI: é possível validar campos de texto diretamente.
Exemplo de código em Swift
import Validator
// Criando as regraslet emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard)let passwordRule = ValidationRuleLength(min: 8, max: 32)
// Validando uma stringlet email = "test@example.com"let result = email.validate(rule: emailRule)
switch result {case .valid: print("Email válido")case .invalid(let errors): print("Erros: \\(errors)")}
// Validação com múltiplas regraslet username = "user123"let usernameRules = ValidationRuleSet<String>()usernameRules.add(rule: ValidationRuleLength(min: 3))usernameRules.add(rule: ValidationRulePattern(pattern: "^[a-zA-Z0-9_]+$"))
let usernameResult = username.validate(rules: usernameRules)if case .invalid(let errors) = usernameResult { print("Erros de validação do nome de usuário: \\(errors)")}
// Exemplo para UITextField (UIKit)let textField = UITextField()textField.text = "email inválido"textField.validate(rule: emailRule) { result in switch result { case .valid: textField.layer.borderColor = UIColor.green.cgColor case .invalid(let errors): textField.layer.borderColor = UIColor.red.cgColor print(errors.first?.message ?? "") }}Quando usar Validator
A biblioteca é ideal para:
- Formulários de entrada (registro, login, perfil).
- Validação de dados antes do envio para o servidor.
- Verificação da entrada do usuário em tempo real.
- Parsing e validação de respostas JSON/API.
- Qualquer cenário onde seja necessária uma verificação de dados reutilizável múltiplas vezes.
Validator reduz significativamente o código boilerplate, torna a validação legível e testável. É uma ferramenta indispensável para qualquer desenvolvedor Swift que trabalhe com entrada de usuário ou dados externos.
```