简单易用的iOS 分类 UITextView&UITextField&UIControl&NSStrin

一、先看一张图

神气的 iOS 分类

是的、就这三个分类:NSString+Regex,UITextField+HG,UITextView+HG。接下来就对他们做一个简单的介绍。

二、如何获取

在之前、已经放到 pod 上。所以获取方式有两种:

1、直接到这里Categorys去查看。

2、通过 pod 方式拉取:

温馨提示:一般 Podfile 应该如何去创建?很多同行是这样的命令:vim Podfile,其实最专业&方便的创建姿势是这样的:pod init

看了代码之后会发现实现是很简单的,不仅代码简单、功能也很简单。存在、就是真理。再简单、也一起看一看有何用途吧。

三、有何功能

1、NSString+Regex

先看分类名Regex,正则表达式的意思。那么这部分的功能就很明确了,主要就是一个字符串的匹配。在开发的过程中对正则表达式的使用几乎是不难的,但是如何将不同的功能整合在一起,这恐怕是一个问题。接下来看一看这里面到底是如何实现的(只看.h 文件中的内容)。

1.1 枚举定义

具体定义如下:

关于这个枚举的定义的一大亮点就是NS_OPTIONS,千万不要看成NS_ENUM,这两种枚举在用法上是有很大区别的。相比较而言NS_OPTIONS的功能比NS_ENUM还要强大。这里并不说我现在使用了NS_OPTIONS就吹嘘它强大,而显得自己有多牛逼。不是这样的、而是想说,对于OC 中的枚举一定要弄清楚这两种的不同。在适当的时机使用适当的实现方式,才能让自己的代码更加合理、更加牛气。

其实苹果给我们提供了很多这样的枚举,比如UIViewAutoresizingNSKeyValueObservingOptions等等。

看到这里,应该能猜测到HGRegexType的用途是什么了。我不说、你不说,心里知道就可以了。[偷笑 5 秒钟、思考一小时]

1.2 提供的方法

在上代码之前,先自我批评一下:所有的方法注释,没有对参数做介绍。这是在写代码过程中的大忌,在.m文件中可以不用、但是在.h文件中不做注释,这肯定是不对的。由于代码是3个月前上传的,也不想去更新了。

直接看代码:

看过代码的你应该知道,实际提供的方法不止以上的两个。但是没有关系,只要明白了这两个方法,其它方法看到就秒懂了。接下来细说一下这两个方法。

当你看到这个方法,根据你多年的开发经验,再加上我那么屌丝的注释,你可能会这样的去用:

毫无保留的认为 strTEXT 中有一个点(.),所以结果 result 的值是 YES,打印的是 有点。其实不是这样,这里的结果是 NO。我的这个方法的意思是要 完全匹配 才算 YES,因为我之前设计这个匹配功能的初衷是:一个字符串中只能只包含 pattern 中的字符,如果多了,就算失败。

所以、以上如果想要让 strTEXT 完全匹配成功,只能是将 pattern 改成这样 ^[a-zA-Z.]+$,意思是 strTEXT 中只能出现字符与点(.)的情况下才能成功,多了,都是失败。显然 strTEXT 中除了点(.)还有其它,所以为 NO。

这样的功能,一般用于什么样的地方呢?比较常用的地方就是,密码验证。往往会有这样的要求:有且只能用字符、数字与下划线。所以就可以弄弄成这样的:

如果 strTEXT 中还包含了 数字,字符与下划线 之外的字符,那么就返回 NO。

那么问题又来了,每次都要去写 pattern 这样的正则表达式,还麻烦啊。是的,的确是很麻烦的。接下来看另外一个方法。

这个方法中,终于使用上那个枚举(HGRegexType)了,看了上的所有解释,应该都知道这个 rType 如何传值了。但是后面的 empty 是怎么回事么?主要是为了处理给空字符串(@"")而准备的。如果是空字符串(@"")的话,是算匹配成功还是匹配失败呢。主要还是要看心情,不对、主要还是要看需求。 empty 传什么,在如果是空字符串(@"")的时候就返回什么。

那么我们就可以来用一下了,如果一个需求是这样的:一个字符串只能包含字母、数字与下划线,并且如果当前字符串为空(@"")的时候,返回为 YES。那么就可以这样弄了:

这样看起来,就清晰了很多。到现在为止,NSString+Regex 部分就介绍结束了,希望能对你有所帮助。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180508B0BPA500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券