Validação de dados em Swift (iOS/macOS): melhores práticas e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Validação de dados em Swift (iOS/macOS): como escolher a ferramenta e não errar



A validação de dados é uma das etapas essenciais no desenvolvimento de aplicativos móveis e desktop em Swift. Sem ela, é impossível garantir a correção da entrada do usuário, a segurança dos dados e o funcionamento estável do aplicativo. Neste artigo, vamos explorar bibliotecas e abordagens populares para validação no ecossistema Apple, além de fornecer exemplos de código para iOS e macOS.



Por que a validação de dados em Swift é necessária?

O usuário pode inserir qualquer coisa: desde uma string vazia até uma injeção SQL. A validação ajuda a:

  • prevenir dados incorretos (email sem @, senha com menos de 8 caracteres);
  • proteger o aplicativo contra ataques (XSS, injeções);
  • melhorar a UX — destacar erros instantaneamente;
  • cumprir regras de negócio (por exemplo, idade > 18 anos).


Bibliotecas populares para validação em Swift

Embora o Foundation tenha ferramentas básicas (NSPredicate, expressões regulares), para cenários complexos é melhor usar bibliotecas especializadas.



1. Validator (por eMKa)

Uma das bibliotecas de código aberto mais populares. Suporta validação de strings, números, datas e regras personalizadas.

// Instalação via 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("Erro: \\(errors.first?.message ?? "Erro desconhecido")")}

A biblioteca suporta encadeamento de regras: "password123".validate(rules: [lengthRule, uppercaseRule, digitRule]). Ideal para formulários de registro.



2. SwiftValidator (por jpotts18)

Uma biblioteca leve para validação de campos de entrada. Funciona com UIKit e SwiftUI. Permite definir regras para cada campo de texto.

// Instalação: 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 os campos são válidos") } else { for (field, error) in errors { print("Erro em \\(field): \\(error.errorMessage)") } }}

Excelente para formulários com muitos campos — permite gerenciar a validação de forma centralizada.



3. Regex (solução integrada do Foundation)

Se não quiser adicionar dependências externas, use NSRegularExpression. Adequado para verificações 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 inválido")}

Desvantagem: difícil de manter e estender. Para projetos grandes, é melhor usar bibliotecas.



4. ValidatedPropertyKit (da comunidade)

Uma abordagem moderna usando property wrappers. Permite anotar propriedades do modelo diretamente.

// Instalação: 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" // Erro: email inválidouser.password = "weak" // Erro: senha muito curtaprint(us

Recommendations