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

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): visão geral de ferramentas e bibliotecas

A validação de dados é um dos principais aspectos do desenvolvimento de aplicativos móveis e desktop de qualidade em Swift. Ela garante que os dados inseridos pelo usuário estejam em conformidade com o formato esperado e as regras de negócio. Neste artigo, abordaremos as principais abordagens, mecanismos integrados e bibliotecas populares para validação no ecossistema Apple.



Por que a validação é importante?

Sem validação, o aplicativo corre o risco de receber dados incorretos, o que pode levar a:

  • Erros no funcionamento do backend
  • Falhas inesperadas (crash) no lado do cliente
  • Vulnerabilidades de segurança (SQL injection, XSS)
  • Má experiência do usuário


Recursos nativos do Swift e Foundation

Swift e o framework Foundation fornecem ferramentas básicas, mas poderosas, para validação.



1. Verificação com NSPredicate

NSPredicate é uma ferramenta poderosa para filtrar e verificar dados. Ele suporta expressões regulares, tornando-o conveniente para validar emails, telefones e outras strings.

import Foundation

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

// Exemplo de usolet testEmail = "user@example.com"print(isValidEmail(testEmail)) // true


2. Validação com NSRegularExpression

Para cenários mais complexos, é conveniente usar NSRegularExpression.

func isValidPassword(_ password: String) -> Bool {    // Mínimo 8 caracteres, uma maiúscula, uma minúscula, um dígito    let passwordRegex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)[a-zA-Z\\\\d]{8,}$"    do {        let regex = try NSRegularExpression(pattern: passwordRegex)        let range = NSRange(location: 0, length: password.utf16.count)        return regex.firstMatch(in: password, options: [], range: range) != nil    } catch {        return false    }}

print(isValidPassword("Swift1234")) // trueprint(isValidPassword("swift123")) // false (sem maiúscula)


Bibliotecas populares para validação

Embora os recursos nativos sejam suficientes para tarefas simples, para formulários complexos com muitas regras, é mais conveniente usar bibliotecas especializadas.



1. Validator (por Adam Waite)

Uma das bibliotecas mais populares para validação de strings em Swift. Suporta encadeamento de regras (chain validation) e validadores personalizados.

// Instalação via SPM: .package(url: "https://github.com/adamwaite/Validator.git", from: "3.0.0")import Validator

let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard, error: "Email inválido")let nameRule = ValidationRuleLength(min: 2, max: 50, error: "O nome deve ter entre 2 e 50 caracteres")

let email = "test@mail.ru"let result = email.validate(rule: emailRule)switch result {case .valid: print("Email válido")case .invalid(let errors): print(errors.first?.message ?? "Erro")}


2. SwiftValidators (por gkaimakas)

Biblioteca leve com sintaxe declarativa. Ideal para validação de campos em tempo real.

import SwiftValidators

let phone = "+7 (999) 123-45-67"if Validator.isPhoneNumber().trim().validate(phone) { print("Telefone válido")} else { print("Formato inválido")}


Validação em SwiftUI com Combine

Aplicativos modernos em SwiftUI frequentemente usam Combine para validação reativa. Isso permite exibir erros instantaneamente, conforme o usuário digita.

import SwiftUIimport Combine

class RegistrationViewModel: ObservableObject { @Published var email = "" @P

Recommendations