测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最新发布 | 2015年6月 |
SPM支持 SPM | ✗ |
由 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文件。