Validação de dados em Swift (iOS/macOS): bibliotecas, ferramentas e exemplos práticos
A validação de dados é um dos principais aspectos do desenvolvimento de aplicativos iOS e macOS de qualidade. Sem uma verificação confiável dos dados inseridos, o usuário pode encontrar erros, comportamento incorreto da interface ou até falhas. Neste artigo, veremos as melhores bibliotecas e abordagens para validação de dados em Swift, além de fornecer exemplos de código específicos.
Por que a validação de dados é necessária?
A validação permite:
- Garantir a correção dos dados inseridos (email, telefone, senha).
- Prevenir erros no lado do servidor.
- Melhorar a experiência do usuário com feedback instantâneo.
- Aumentar a segurança do aplicativo.
Bibliotecas populares para validação em Swift
Atualmente, existem várias bibliotecas testadas que simplificam a validação de dados:
- Validated — biblioteca leve com suporte a Combine e SwiftUI.
- SwiftValidator — uma das primeiras bibliotecas para validação de campos de texto.
- Validator (de Adamwaite) — ferramenta simples e flexível com várias regras integradas.
- Regex — não é uma biblioteca, mas um mecanismo integrado para trabalhar com expressões regulares, frequentemente usado para validação.
Exemplo 1: Validação de email com expressão regular
A maneira mais simples é usar NSRegularExpression ou o método integrado 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")) // falseExemplo 2: Validação de senha (comprimento, presença de dígitos e caracteres especiais)
Frequentemente, é necessário que a senha tenha pelo menos 8 caracteres, pelo menos um dígito e um caractere especial.
func isValidPassword(_ password: String) -> Bool { // Mínimo de 8 caracteres guard password.count >= 8 else { return false } // Verificar presença de dígito let digitRegex = ".*[0-9]+.*" let digitPredicate = NSPredicate(format: "SELF MATCHES %@", digitRegex) guard digitPredicate.evaluate(with: password) else { return false } // Verificar presença de caractere 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")) // falseExemplo 3: Uso da biblioteca Validator (Adamwaite)
A biblioteca Validator fornece uma sintaxe conveniente para encadeamento de regras.
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("Erro: \\(errors.first?.message ?? "")")}Exemplo 4: Validador personalizado para verificar idade
Às vezes, é necessário verificar se o usuário tem uma idade mínima.
struct AgeValidator { static func isValid(age: Int) -> Bool { return age >= 18 && age <= 120 }}
// Usolet userAge = 25if AgeValidator.isValid(age: userAge) { print( Também na biblioteca
Trabalhando com YAML em C# (.NET): bibliotecas e exemplos de uso
Geração de PDF em Swift (iOS/macOS): visão geral das ferramentas e exemplos
Cliente Elasticsearch para Java: guia completo de conexão e operação