Что такое валидация данных в Swift и зачем она нужна?
Валидация данных — это процесс проверки входных данных на соответствие заданным правилам. В iOS/macOS разработке она критически важна: от проверки email и пароля в форме регистрации до валидации JSON-ответа от сервера. Встроенные средства Foundation (NSPredicate, регулярные выражения) часто громоздки и неудобны для повторного использования. Validator — это легковесная библиотека для Swift, которая позволяет декларативно описывать правила валидации с помощью цепочек вызовов (chainable syntax) и использовать их в любом месте проекта.
Как установить библиотеку Validator
Validator доступна через Swift Package Manager (SPM). Добавьте в Package.swift или через Xcode: File → Add Packages → введите URL репозитория:
https://github.com/adamwaite/ValidatorИли через CocoaPods, если используете его:
pod 'Validator'Основные функции библиотеки
- Встроенные правила: email, URL, строка, число, длина, регулярные выражения и многие другие.
- Кастомные правила: можно создать любую проверку, реализовав протокол
ValidationRule. - Валидация коллекций: проверка массивов, словарей, опциональных значений.
- Человекочитаемые ошибки: возвращает локализованные сообщения об ошибках.
- Работа с UIKit/SwiftUI: можно напрямую валидировать текстовые поля.
Пример кода на Swift
import Validator
// Создаем правила
let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard)
let passwordRule = ValidationRuleLength(min: 8, max: 32)
// Валидируем строку
let email = "test@example.com"
let result = email.validate(rule: emailRule)
switch result {
case .valid:
print("Email корректен")
case .invalid(let errors):
print("Ошибки: \(errors)")
}
// Валидация с несколькими правилами
let username = "user123"
let usernameRules = ValidationRuleSet<String>()
usernameRules.add(rule: ValidationRuleLength(min: 3))
usernameRules.add(rule: ValidationRulePattern(pattern: "^[a-zA-Z0-9_]+$"))
let usernameResult = username.validate(rules: usernameRules)
if case .invalid(let errors) = usernameResult {
print("Ошибки валидации имени: \(errors)")
}
// Пример для UITextField (UIKit)
let textField = UITextField()
textField.text = "invalid email"
textField.validate(rule: emailRule) { result in
switch result {
case .valid:
textField.layer.borderColor = UIColor.green.cgColor
case .invalid(let errors):
textField.layer.borderColor = UIColor.red.cgColor
print(errors.first?.message ?? "")
}
}Когда использовать Validator
Библиотека идеально подходит для:
- Форм ввода (регистрация, логин, профиль).
- Валидации данных перед отправкой на сервер.
- Проверки пользовательского ввода в реальном времени.
- Парсинга и валидации JSON/API ответов.
- Любых сценариев, где требуется многократная переиспользуемая проверка данных.
Validator значительно сокращает шаблонный код, делает валидацию читаемой и тестируемой. Это must-have инструмент для любого Swift-разработчика, работающего с пользовательским вводом или внешними данными.
Также в библиотеке
OAuth клиент для JavaScript (Node.js): обзор и примеры использования
Планировщик задач на C++: создаём Task Scheduler с нуля
Sharp для JavaScript (Node.js): полное руководство с примерами
Тестирование в Go (Golang): фреймворки и инструменты — полное руководство
Koin — Dependency Injection контейнер для Kotlin