JUValidate 是一个库,用于轻松编写对象图验证,通常用于验证由某些第三方 API 返回的对象图是否包含正确格式化的数据。这是一个通常如何用 Objective-C 编写验证的例子(或者,因为太麻烦,你可能根本就会跳过它)
- (void)myFunction:(NSDictionary *)input
{
id name = [input objectForKey:@"name"];
if(![name isKindOfClass:[NSString class]])
return; // Probably indicate some error here...
id value = [input objectForKey:@"value"];
if(![value isKindOfClass:[NSNumber class]])
return; // Also error indication here...
NSInteger number = [value integerValue];
if(number < 5 || number > 60)
return; // Aaaaand guess what?
// Do something with 2 sanitized values
}
另一方面,使用 JUValidate,它变得像这样简单
- (void)myFunction:(NSDictionary *)input
{
JUValidator *validator = [JUValidator validatorWithName:nil andSetupBlock:^(JUValidator *validator) {
validator.valueForKey(@"name").isClass([NSString class]);
validator.valueForKey(@"value").number.isInRange(@(5), @(60));
}];
NSError *error;
BOOL result = [validator validateObject:input error:&error];
if(!result)
return; // Hey, there already IS an error!
}