ObjcModelValidation 0.2

ObjcModelValidation 0.2

测试测试过的
语言语言 Obj-CObjective C
许可 MIT
发布最新发布2014年12月

Piet BrauerPiet Brauer维护。



  • Piet Brauer

Objective-C模型验证器

Objective-C模型验证器是一组类和分类,用于向您的应用程序添加简单的模型验证。

想法

该项目受到了著名的ActiveRecord Ruby框架的启发。

在Objective-C中进行验证需要一些努力,而且我急需它。了解ActiveRecord使我做到了这一点。

如何使用

使用cocoapods导入

pod 'ObjcModelValidation', '~> 0.2'

创建您的模型

#import "ValidationModel.h"

@interface SampleModel : ValidationModel

@property (nonatomic, strong) NSString *nameString;
@property (nonatomic, strong) NSNumber *ageNumber;

@end

请注意,它继承自ValidationModel。

此模型中使用的所有属性都将根据其类进行验证。

#import "SampleModel.h"

@implementation SampleModel

-(NSError *)validateAgeNumber:(NSNumber *)ageNumber{
    if ([ageNumber greaterThan:@18] && [ageNumber presence]) {
        return nil;
    }

    return [self errorWithLocalizedMessage:NSLocalizedString(@"You should be older than 18.", @"")];
}

-(NSError *)validateNameString:(NSString *)nameString{
    if ([nameString lengthMin:4]) {
        return nil;
    }

    return [self errorWithLocalizedMessage:NSLocalizedString(@"Your name should be at least 4 characters long", @"")];
}

@end

请注意,每个验证方法的语法为:-(NSError *)validate<CapitalizedVariableName>:(<VariableClass> *)<variableName>; 目前这仅适用于对象。因此,如果您在任何地方存储了NSIntegerBOOL,请使用NSNumber代替。

实现保存方法

要开始验证您的模型,请创建它们并保存。每个模型都有其自己的保存方法,它返回一个包含NSError对象的NSArray

示例

SampleModel *sample = [[SampleModel alloc] init];
sample.nameString = @"Piet";
sample.ageNumber = @22;

NSArray *errors = [sample save];
if (errors.count != 0) {

    PBLog(@"I got some errors here.");

    for (NSError *error in errors) {

        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:error.localizedDescription delegate:nil cancelButtonTitle:@"Hide" otherButtonTitles:nil];
        [alertView show];

    }
}

请注意,当重写save时,您必须调用[super save];。否则,验证将不会调用。

如果一切符合要求,您将在控制台上看到一条日志。

使用验证器

NSObject验证器

检查值是否存在。

此方法应该被其他验证类重写,以获取特定类的存在验证。

-(BOOL)presence;

检查特定方法并执行自定义验证。

-(BOOL)validatesWithSelector:(SEL)selector;

NSNumber验证器

检查referenceNumber是否大于self

-(BOOL)greaterThan:(NSNumber *)referenceNumber;

检查referenceNumber是否小于self

-(BOOL)lessThan:(NSNumber *)referenceNumber;

NSString验证器

接受一个字符串数组并在self中搜索它。

如果字符串在字符串中没有找到,则返回YES。

-(BOOL)exclusion:(NSArray *)exclusionArray;

使用正则表达式字符串进行验证。

-(BOOL)format:(NSString *)regexExpression;

接受一个字符串数组并在self中搜索它。

如果字符串在字符串中找到,则返回YES。

-(BOOL)inclusion:(NSArray *)inclusionArray;

最小长度验证

-(BOOL)lengthMin:(NSInteger)length;

最大长度验证

-(BOOL)lengthMax:(NSInteger)length;

范围验证

-(BOOL)lengthIn:(NSInteger)lengthMin and:(NSInteger)lengthMax;

精确范围验证

-(BOOL)lengthIs:(NSInteger)length;

如果字符串只包含数字则验证成功

-(BOOL)numericality;

非常欢迎贡献者

Fork 仓库,编写测试并提交拉取请求。

联系方式

本质上是书呆子

@piet_nbn