Validation des données en Swift (iOS/macOS) : aperçu des outils et bibliothèques
La validation des données est l'un des aspects clés du développement d'applications mobiles et de bureau de qualité en Swift. Elle permet de garantir que les données saisies par l'utilisateur correspondent au format attendu et aux règles métier. Dans cet article, nous examinerons les principales approches, les mécanismes intégrés et les bibliothèques populaires pour la validation dans l'écosystème Apple.
Pourquoi la validation est-elle importante ?
Sans validation, l'application risque de recevoir des données incorrectes, ce qui peut entraîner :
- Des erreurs dans le fonctionnement de la partie serveur
- Des plantages inattendus (crash) côté client
- Des vulnérabilités de sécurité (injections SQL, XSS)
- Une mauvaise expérience utilisateur
Fonctionnalités intégrées de Swift et Foundation
Swift et le framework Foundation fournissent des outils de base mais puissants pour la validation.
1. Vérification avec NSPredicate
NSPredicate est un outil puissant pour filtrer et vérifier les données. Il prend en charge les expressions régulières, ce qui le rend pratique pour la validation des emails, téléphones et autres chaînes.
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)}
// Exemple d'utilisationlet testEmail = "user@example.com"print(isValidEmail(testEmail)) // true2. Validation via NSRegularExpression
Pour des scénarios plus complexes, il est pratique d'utiliser NSRegularExpression.
func isValidPassword(_ password: String) -> Bool { // Minimum 8 caractères, une majuscule, une minuscule, un chiffre 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 (pas de majuscule)Bibliothèques populaires pour la validation
Bien que les outils intégrés soient suffisants pour des tâches simples, pour des formulaires complexes avec de nombreuses règles, il est plus pratique d'utiliser des bibliothèques spécialisées.
1. Validator (par Adam Waite)
L'une des bibliothèques les plus populaires pour la validation de chaînes en Swift. Elle prend en charge les chaînes de règles (chain validation) et les validateurs personnalisés.
// Installation via SPM : .package(url: "https://github.com/adamwaite/Validator.git", from: "3.0.0")import Validator
let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard, error: "Email invalide")let nameRule = ValidationRuleLength(min: 2, max: 50, error: "Le nom doit contenir entre 2 et 50 caractères")
let email = "test@mail.ru"let result = email.validate(rule: emailRule)switch result {case .valid: print("Email valide")case .invalid(let errors): print(errors.first?.message ?? "Erreur")}2. SwiftValidators (par gkaimakas)
Bibliothèque légère avec une syntaxe déclarative. Idéale pour la vérification des champs en temps réel.
import SwiftValidators
let phone = "+7 (999) 123-45-67"if Validator.isPhoneNumber().trim().validate(phone) { print("Téléphone valide")} else { print("Format invalide")}Validation dans SwiftUI avec Combine
Les applications modernes en SwiftUI utilisent souvent Combine pour la validation réactive. Cela permet d'afficher les erreurs instantanément, au fur et à mesure de la saisie.
import SwiftUIimport Combine
class RegistrationViewModel: ObservableObject { @Published var email = "" @P Aussi dans la bibliothèque
Planificateur de tâches Rust : aperçu des bibliothèques et exemples de code
Travailler avec Excel en C# (.NET) : Bibliothèques EPPlus et ClosedXML