Валидация данных в Swift: библиотека Validator

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое 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 кода.

Рекомендаций