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

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

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

Начать курс

Что такое валидация данных в 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-разработчика, работающего с пользовательским вводом или внешними данными.

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