前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS - MitRegx

iOS - MitRegx

作者头像
Mitchell
发布2018-09-30 09:37:38
4250
发布2018-09-30 09:37:38
举报
  • MitRegx,这个小轮子写了很长时间了,感觉还算比较实用。

一、困扰

  • 以往我们在登录注册的时候要去校验诸如账号、密码和验证码的一些格式是否正确,可能会写出如下的代码:
if (账号的格式正确&&密码的格式正确&&验证码的格式正确){  
      [发送网络请求进行下一步]
}
  • 这样的代码看上去很难受。

二、函数式编程

  • 那个时候用 Masonry,体会了函数式编程的好处:
    • 代码简洁
    • 易于理解
    • 方便代码管理

MitRegx

  • MitRegx 分4个部分
    • MitRegx.h 头文件,便于类的导入。
    • MitRegxConst.h ,这个类中存放了一些错误状态的常量。
    • MitRegexMaker.h 核心逻辑处理类,在这里对通用的验证逻辑进行处理。
/** 校验状态 */
@property(nonatomic, assign)MitRegexStateType status;
/** 返回状态文本 */
@property(nonatomic, strong)NSString * statusString;
/** 是否通过了校验 
    当连续校验多个值的时候会使用到此值.
 */
@property(nonatomic, getter=isPassed)BOOL passed;
/** 校验手机号 */
-(MitRegexMaker * (^)(NSString * str))validatePhone;
/** 校验密码 */
-(MitRegexMaker * (^)(NSString * str))validatePsd;
/** 校验验证码 */
-(MitRegexMaker * (^)(NSString * str))validateCodeNumber;
/** 验证身份证 */
-(MitRegexMaker * (^)(NSString * str))validatePersonalId;
/** 验证 email */
-(MitRegexMaker*(^)(NSString *))validateEmail;
- NSObject+mitRegexMaker.h 初始化类扩展,提供不同返回值的初始化方式,使用者可以按需调用。
/** 获取处理类 */
+(MitRegexMaker*)mit_makeMitRegexMaker:(void(^)(MitRegexMaker * maker))block;
/**
 *  状态码 + 状态码信息 (Block)
 *  @param block    校验处理类
 *  @param mitBlock 返回状态值信息(只有当校验状态全部通过的时候, isPassed 才返回 Yes)
 */
+(void)mit_makeMitRegexMaker:(void(^)(MitRegexMaker * maker))block MitValue:(void(^)(MitRegexStateType statusType,NSString * statusStr,BOOL isPassed))mitBlock;
/** 返回状态码 */
+(MitRegexStateType)mit_makeMitRegexStatusMaker:(void (^)(MitRegexMaker * maker))block;
/** 返回状态码所对应状态信息 */
+(NSString *)mit_makeMitRegexStatusStringMaker:(void (^)(MitRegexMaker * maker))block;
  • 调用方式
 /** 
     如果之前前面一个条件的校验未通过,将不会再进行下一个校验,返回的状态值也是未通过的校验值
     只有当校验条件全部通过的时候, isPassed 才为1.
     */
    [NSObject mit_makeMitRegexMaker:^(MitRegexMaker *maker) {
maker.validateCodeNumber(@"1234").validatePhone(@"15941281116").validatePsd(@"123456").validatePersonalId(@"2103021991071").validateEmail(@"41692292@roo.bo");  
    } MitValue:^(MitRegexStateType statusType, NSString * statusStr , BOOL isPassed) {
        NSLog(@"是否通过校验 = %d 状态码 = %ld, 状态详细 = %@",isPassed,statusType,statusStr);
    }];
  • 设计的核心思路,通过NSObject+mitRegexMaker.h 中提供的类方法完成 MitRegexMaker 实例的创建,并通过代码块返回实例,接着在代码块中按需调用 MitRegexMaker 的校验方法完成校验,这里每个校验方法都会返回实例本身,以便进行下一次的格式校验。
  • 更详细的代码和使用方法在 MitRegx,希望大家多提宝贵意见。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、困扰
  • 二、函数式编程
  • MitRegx
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档