Что такое Validator и зачем он нужен?
Validator — это легковесная библиотека для валидации данных в Swift, предназначенная для iOS и macOS приложений. Она позволяет декларативно описывать правила проверки пользовательского ввода, избегая громоздких if-else конструкций. Основная цель — упростить обработку форм, API-запросов и любых других данных, где требуется проверка на корректность (email, пароль, возраст, диапазон чисел и т.д.).
Установка
Validator устанавливается через Swift Package Manager (SPM). Добавьте в Package.swift зависимость:
.package(url: "https://github.com/adamwaite/Validator.git", from: "3.2.0")Или через Xcode: File → Add Packages → вставьте URL репозитория.
Основные функции
- Валидация строк: email, URL, регулярные выражения, длина, непустота.
- Числовая валидация: диапазон, минимальное/максимальное значение, целые числа.
- Композитные правила: объединение нескольких условий через
And/Or. - Кастомные валидаторы: создание собственных правил через замыкания.
- Интеграция с UIKit/SwiftUI: готовые расширения для UITextField и SwiftUI View.
Пример кода на Swift (iOS)
import Validator
// 1. Определяем правило для email
let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard, error: "Некорректный email")
// 2. Валидируем строку
let email = "test@example.com"
let result = email.validate(rule: emailRule)
switch result {
case .valid:
print("Email корректен")
case .invalid(let errors):
print("Ошибки: \(errors)")
}
// 3. Композитное правило: пароль от 8 до 20 символов, содержит хотя бы одну цифру
let passwordRule = ValidationRuleLength(min: 8, max: 20, error: "Длина пароля от 8 до 20")
&& ValidationRulePattern(pattern: ".*[0-9].*", error: "Пароль должен содержать цифру")
let password = "SecurePass1"
let passwordResult = password.validate(rule: passwordRule)
// 4. Валидация UITextField (UIKit)
let textField = UITextField()
textField.text = "user@domain.com"
textField.validate(rule: emailRule) { result in
// обработка результата
}Когда использовать Validator
- Формы регистрации/авторизации (email, пароль, телефон).
- Валидация ввода в UITextField / SwiftUI TextField.
- Проверка данных перед отправкой на сервер.
- Фильтрация и проверка пользовательского контента (отзывы, комментарии).
- Парсинг и валидация JSON/API ответов.
Библиотека идеально подходит для проектов, где требуется гибкая, читаемая и расширяемая система проверки данных без лишнего boilerplate кода.
Также в библиотеке
Dependency Injection контейнер для Go (Golang): Wire, Dig и Uber FX
Генерация PDF-отчётов на C++ с libharu и PoDoFo
Мониторинг приложений C++: библиотеки и инструменты для сбора метрик
OAuth клиент для PHP: аутентификация через социальные сети и API
Работа с изображениями в Kotlin: библиотеки, инструменты и примеры