Datenvalidierung in Swift (iOS/macOS): Überblick über Werkzeuge und Bibliotheken
Datenvalidierung ist einer der Schlüsselaspekte bei der Entwicklung qualitativ hochwertiger mobiler und Desktop-Anwendungen in Swift. Sie stellt sicher, dass die vom Benutzer eingegebenen Daten dem erwarteten Format und den Geschäftsregeln entsprechen. In diesem Artikel betrachten wir die grundlegenden Ansätze, integrierten Mechanismen und beliebten Bibliotheken für die Validierung im Apple-Ökosystem.
Warum ist Validierung wichtig?
Ohne Validierung riskiert die Anwendung, ungültige Daten zu erhalten, was zu Folgendem führen kann:
- Fehlern im Serverbetrieb
- Unerwarteten Abstürzen (Crash) auf der Client-Seite
- Sicherheitslücken (SQL-Injection, XSS)
- Schlechter Benutzererfahrung
Integrierte Möglichkeiten von Swift und Foundation
Swift und das Foundation-Framework bieten grundlegende, aber leistungsstarke Werkzeuge zur Validierung.
1. Prüfung mit NSPredicate
NSPredicate ist ein leistungsstarkes Werkzeug zum Filtern und Prüfen von Daten. Es unterstützt reguläre Ausdrücke, was es praktisch für die Validierung von E-Mails, Telefonnummern und anderen Zeichenketten macht.
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)}
// Beispiel zur Verwendunglet testEmail = "user@example.com"print(isValidEmail(testEmail)) // true2. Validierung mit NSRegularExpression
Für komplexere Szenarien ist die Verwendung von NSRegularExpression praktisch.
func isValidPassword(_ password: String) -> Bool { // Mindestens 8 Zeichen, ein Großbuchstabe, ein Kleinbuchstabe, eine Ziffer 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 (kein Großbuchstabe)Beliebte Bibliotheken für die Validierung
Obwohl die integrierten Mittel für einfache Aufgaben ausreichen, sind für komplexe Formulare mit vielen Regeln spezialisierte Bibliotheken praktischer.
1. Validator (von Adam Waite)
Eine der beliebtesten Bibliotheken zur String-Validierung in Swift. Unterstützt Regelketten (Chain Validation) und benutzerdefinierte Validatoren.
// Installation über SPM: .package(url: "https://github.com/adamwaite/Validator.git", from: "3.0.0")import Validator
let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard, error: "Ungültige E-Mail")let nameRule = ValidationRuleLength(min: 2, max: 50, error: "Der Name muss zwischen 2 und 50 Zeichen lang sein")
let email = "test@mail.ru"let result = email.validate(rule: emailRule)switch result {case .valid: print("E-Mail ist gültig")case .invalid(let errors): print(errors.first?.message ?? "Fehler")}2. SwiftValidators (von gkaimakas)
Eine leichtgewichtige Bibliothek mit deklarativem Syntax. Ideal für die Echtzeit-Überprüfung von Feldern.
import SwiftValidators
let phone = "+7 (999) 123-45-67"if Validator.isPhoneNumber().trim().validate(phone) { print("Telefonnummer ist gültig")} else { print("Ungültiges Format")}Validierung in SwiftUI mit Combine
Moderne SwiftUI-Anwendungen verwenden oft Combine für die reaktive Validierung. Dies ermöglicht es, Fehler sofort während der Eingabe anzuzeigen.
import SwiftUIimport Combine
class RegistrationViewModel: ObservableObject { @Published var email = "" @P Auch in der Bibliothek
Arbeiten mit ZIP/Archiven in C++: Bibliotheken und Codebeispiele
Arbeiten mit Excel in JavaScript (Node.js): Bibliotheken und Codebeispiele
SMS-Versand mit JavaScript (Node.js): API-Bibliotheken und Codebeispiele
Arbeit mit CSV in TypeScript: Bibliotheken, Parsing und Datengenerierung
Swagger/OpenAPI-Generierung für PHP: Die besten Tools und Bibliotheken