什么是 Validator,为什么需要它?
Validator 是一个轻量级的 Swift 数据验证库,适用于 iOS 和 macOS 应用。它允许您以声明式方式描述用户输入的验证规则,避免冗长的 if-else 结构。其主要目标是简化表单处理、API 请求以及任何需要验证正确性(如电子邮件、密码、年龄、数字范围等)的数据处理。
安装
Validator 通过 Swift Package Manager (SPM) 安装。在 Package.swift 中添加依赖:
.package(url: "https://github.com/adamwaite/Validator.git", from: "3.2.0")或者通过 Xcode:File → Add Packages → 粘贴仓库 URL。
主要功能
- 字符串验证:电子邮件、URL、正则表达式、长度、非空。
- 数字验证:范围、最小值/最大值、整数。
- 复合规则:通过
And/Or组合多个条件。 - 自定义验证器:通过闭包创建自己的规则。
- 与 UIKit/SwiftUI 集成:为 UITextField 和 SwiftUI View 提供现成的扩展。
Swift (iOS) 代码示例
import Validator
// 1. 定义电子邮件规则let emailRule = ValidationRulePattern(pattern: EmailValidationPattern.standard, error: "无效的电子邮件")
// 2. 验证字符串let email = "test@example.com"let result = email.validate(rule: emailRule)
switch result {case .valid: print("电子邮件有效")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
- 注册/登录表单(电子邮件、密码、电话)。
- 验证 UITextField / SwiftUI TextField 的输入。
- 在发送到服务器之前检查数据。
- 过滤和验证用户生成的内容(评论、反馈)。
- 解析和验证 JSON/API 响应。
该库非常适合需要灵活、可读且可扩展的数据验证系统,同时避免多余样板代码的项目。