许可证 2.0

Warrant 2.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2016年2月
SPM支持 SPM

Shaps 维护。



简化数据验证。在代码和 Interface Builder 中。

Warrant 致力于从代码中移除验证,集中常见验证模式,使验证更具备组合性。

Warrant 通过遵循最佳实践来提升数据验证的效能

  • 单一职责原则
  • 关注点分离
  • 组合
  • 可重用性

验证器

Warrant 默认提供了四种验证器

  • RegexValidator
  • EmailValidator
  • BlockValidator
  • 复合验证器(使用 .All.Any 规则)

验证器还使用了 Swift 的新错误处理功能,使其在代码中使用起来更加方便。

视图验证器

Warrant 还提供了对三种视图类型的默认验证支持

  • UITextField
  • UITextView
  • UITableViewCell
  • UIButton

Warrant 还利用了 @IBInspectable,让您通过 IB 访问常见的配置选项。

请参阅示例应用程序或上面的截图,了解您如何使用此功能。

依赖项

Warrant 甚至支持相关字段。因此,您可以用零代码配置一个视图,以验证其验证器,同时还可以验证其他相关视图。参见示例登录应用程序以了解它是如何工作的。

扩展 Warrant

Warrant 使用面向协议的方法,这使得添加您自己的验证器变得很容易。

如果您想要创建一个新的验证器,您可以选择遵守 Validating 协议或直接子类化 Validator(推荐)。

如果您想扩展一个 UIView(或其子类)以支持验证,您只需使其遵守 ViewValidating。现在您可以使用它在代码或 IB 中,并从中获得所有的好处和力量。

代码

如果您更喜欢在代码中设置您的验证器

let validator = EmailValidator()
validator.regexPattern = ...
do {
  validator.validate(email)
} catch { print(error) }

如果您想要配置一个具有依赖关系的视图,您可以设置如下

button.dependantViews = [ emailField, passField ]

验证就那么简单

do {
  try button.validate()
} catch { print(error) }

复合验证器

如果我们想要对一个值应用多个验证器怎么办?很简单,我们可以使用一个复合验证器

let nonEmpty = NonEmptyValidator()
let email = EmailValidator()

let compound = CompoundValidator(validators: [ nonEmpty, email ])
do {
  try compound.validators?.validate("[email protected]", rule: .All)
} catch { print(error) }

或者我们直接使用一个 Swift 数组

let validators = [ nonEmpty, email ]
validators.validate("[email protected]", rule: .All)

复合验证器在通过 Interface Builder 配置时更好。

注意:您也可以以这种方式验证多个视图

安装

保修通过CocoaPods提供。要安装它,只需将以下行添加到您的Podfile中

pod 'Warrant'

拉取请求

如果您有关于实用且可重用的验证器的想法,请创建一个拉取请求,我会将它们包括在内。

在设计您的验证器时,请记住以下基本规则

作者

Shaps Mohsenin,@shaps

许可证

SPXDataValidators可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。