SchemaValidator 0.1.0

SchemaValidator 0.1.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2015年6月
SPM支持 SPM

Sathyavijayan Vittal 维护。



  • 作者:
  • Sathyavijayan Vittal

要求

安装

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

pod "SchemaValidator"

用法

您可以使用 SchemaValidator 验证类似于字典对象的 JSON (例如:Swift 中的符合 [NSObject:AnyObject] 的一切)。

要定义一个模式,请这样做

let schema:Schema = [
    "timestamp": [V.Present, V.Integer],
    "sourceId" : [V.Present],
    "userInfo" : [
        "email" : [V.Email],
        "age"   : [V.GreaterOrEqual(18)],
        "ni_number": [V.Size(6)],
    "devices": [
        "UDID": [V.Present]
    ]]]

要对一个对象进行模式验证,请这样做

var user:[String:AnyObject] = [
    "timestamp": 123123,
    "sourceId" : "XDUUSD-1",
    "userInfo" : [
        "email": "[email protected]",
        "age"  : 17,
        "ni_number": "ABCDEF"],
    "devices": [
        ["name": "iPhone"],
        ["name": "iPad", "UDID": "XYX"]
    ]]

var err:NSError? = V.validate(schema, object: user)

NSError 中的 userInfo 字段包含一个字典,包含所有失败的字段错误。如果字段值本身是数组,则标签后缀为 .x (例如:devices.0)。

//println(err?.userInfo) will result in the following:
[devices.0: {
    UDID = ("is required.");
}, userInfo: {
    age = ("must be greater than or equal to 18");
}]

扩展

您可以通过确保您的验证器符合 (AnyObject?) -> (Bool,String?) 来扩展 SchemaValidator。

可选参数 AnyObject? 是正在验证的键的值。返回的对象应包含一个布尔值,指定是否验证失败(false)或通过(true),以及一个可选的错误消息。请确保在验证失败时返回可读的错误消息。

自定义错误消息

如果您想覆盖默认的错误消息,可以通过设置 SchemaValidator.messageProvider 使用一个符合 (forKey:String) -> String 的闭包来实现。

目前错误消息的支持非常基本。我正在努力改进这一点。请期待更新。

贡献

对这个库的贡献将非常受欢迎。如果您编写了一个您认为对其他人有用的验证器,请通过 pull request 贡献。

我只要求您将验证器作为 SchemaValidator 的一个扩展提供。(参见:DefaultValidators.swift)

作者

Sathyavijayan Vittal, [email protected]

许可证

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