Swift 数据验证:Validator 库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 Swift 中的数据验证,为什么需要它?

数据验证是根据指定规则检查输入数据的过程。在 iOS/macOS 开发中,它至关重要:从注册表单中的 email 和密码验证,到服务器 JSON 响应的验证。Foundation 内置工具(NSPredicate、正则表达式)通常冗长且不便复用。Validator 是一个轻量级的 Swift 库,允许您通过链式语法声明式地描述验证规则,并在项目的任何地方使用它们。

如何安装 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 显著减少了样板代码,使验证变得可读且可测试。对于任何处理用户输入或外部数据的 Swift 开发者来说,这是一个必备工具。

推荐