简化数据验证。在代码和 Interface Builder 中。
Warrant 致力于从代码中移除验证,集中常见验证模式,使验证更具备组合性。
Warrant 通过遵循最佳实践来提升数据验证的效能
Warrant 默认提供了四种验证器
.All
或 .Any
规则)验证器还使用了 Swift 的新错误处理功能,使其在代码中使用起来更加方便。
Warrant 还提供了对三种视图类型的默认验证支持
Warrant 还利用了 @IBInspectable
,让您通过 IB 访问常见的配置选项。
请参阅示例应用程序或上面的截图,了解您如何使用此功能。
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文件。