Datenvalidierung in Swift (iOS/macOS): Bibliotheken, Werkzeuge und praktische Beispiele
Datenvalidierung ist einer der Schlüsselaspekte bei der Entwicklung hochwertiger iOS- und macOS-Apps. Ohne zuverlässige Überprüfung der eingegebenen Daten kann der Benutzer auf Fehler, fehlerhaftes Interface-Verhalten oder sogar Abstürze stoßen. In diesem Artikel betrachten wir die besten Bibliotheken und Ansätze zur Datenvalidierung in Swift und geben konkrete Codebeispiele.
Warum ist Datenvalidierung wichtig?
Validierung ermöglicht:
- Sicherstellung der Korrektheit eingegebener Daten (E-Mail, Telefon, Passwort).
- Vermeidung von Fehlern auf der Serverseite.
- Verbesserung der Benutzererfahrung durch sofortiges Feedback.
- Erhöhung der Anwendungssicherheit.
Beliebte Bibliotheken für die Validierung in Swift
Heutzutage gibt es mehrere bewährte Bibliotheken, die die Datenvalidierung vereinfachen:
- Validated – eine leichte Bibliothek mit Unterstützung für Combine und SwiftUI.
- SwiftValidator – eine der ersten Bibliotheken zur Validierung von Textfeldern.
- Validator (von Adamwaite) – ein einfaches und flexibles Werkzeug mit vielen integrierten Regeln.
- Regex – keine Bibliothek, sondern ein eingebauter Mechanismus für reguläre Ausdrücke, der oft zur Validierung verwendet wird.
Beispiel 1: E-Mail-Validierung mit regulärem Ausdruck
Der einfachste Weg ist die Verwendung von NSRegularExpression oder der integrierten Methode 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)}
// Verwendungprint(isValidEmail("test@example.com")) // trueprint(isValidEmail("invalid-email")) // falseBeispiel 2: Passwortvalidierung (Länge, Vorhandensein von Ziffern und Sonderzeichen)
Oft wird verlangt, dass das Passwort mindestens 8 Zeichen, mindestens eine Ziffer und ein Sonderzeichen enthält.
func isValidPassword(_ password: String) -> Bool { // Mindestens 8 Zeichen guard password.count >= 8 else { return false } // Prüfung auf Vorhandensein einer Ziffer let digitRegex = ".*[0-9]+.*" let digitPredicate = NSPredicate(format: "SELF MATCHES %@", digitRegex) guard digitPredicate.evaluate(with: password) else { return false } // Prüfung auf Vorhandensein eines Sonderzeichens 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")) // falseBeispiel 3: Verwendung der Bibliothek Validator (Adamwaite)
Die Bibliothek Validator bietet eine praktische Syntax für Regelketten.
import Validator
let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard, error: "Ungültige E-Mail")let emailResult = "user@domain.com".validate(rule: emailRule)
switch emailResult {case .valid: print("E-Mail ist gültig")case .invalid(let errors): print("Fehler: \\(errors.first?.message ?? "")")}Beispiel 4: Benutzerdefinierter Validator zur Altersprüfung
Manchmal muss überprüft werden, ob der Benutzer ein bestimmtes Alter überschritten hat.
struct AgeValidator { static func isValid(age: Int) -> Bool { return age >= 18 && age <= 120 }}
// Verwendunglet userAge = 25if AgeValidator.isValid(age: userAge) { print( Auch in der Bibliothek
Datenvalidierung in C++: Bibliotheken, Muster und Codebeispiele
HTTP-Client für TypeScript: Top-Bibliotheken für moderne Webanwendungen
Testen in TypeScript mit Vitest
ORM für Swift (iOS/macOS): Vergleich und Anwendungsbeispiele