首先映入眼帘的是UI所以我们就先从UI开始分析然后再开始分析这个代码最炫酷的部分-------------------搜索框。
这份代码用的是SB跟代码集成,看到这个代码以后深深的体会到SB跟代码结合的美好。一个困惑的就是这三个方法的关系,这个是因为用到了SB的原因所以可以这样写,利用了SB自带方法以及我们一般见的拖拽可以实现传值也可以实现跳转。一开始不明白为啥写了两个方法明明一个方法就可以实现,研究了一下这样写更简洁大方而且不容易出错(我也只能这样理解了,要是有好的见解补偿一下我的知识库)。
然后就来到我们的实现层,这个传值的判断还有跳转我就不用介绍了相信大家都懂,这部分个人觉得还是很简洁的,代码工整。我们来扒一下这个工程的核心部分ZYSearchViewController。根据不同的type进行不同的处理我也是不用介绍了。下面就是根据字符串来进行查找然后显示。他用了一个数组进行接收,如果你只是想调用知道这些也就够了,把Lib直接拖进去然后调用方法,但是我们要深扒一下整个工程。
这两个类就是深扒的切入点。Person是为了配合Model部分。ZYPinYinSearch是配合搜索部分的。说到搜索部分就要提到他写的搜索框_searchBar,并且调用系统方法实现搜索点击事件。在点击里面有这样一个方法+(NSArray *)searchWithOriginalArray:(NSArray
*)originalArray andSearchText:(NSString *)searchText
andSearchByPropertyName:(NSString *)propertyName,这个方法是实现判断输入内容是否是中文以及根据拼音搜索返回数组数据。
作者细心的做了这样不为空的判断,当然这样的判断是应该的毕竟不这样判断有可能会引起bug,但是还是觉得要提一下,因为我就经常忘了写。下面就是根据不同传入参数的格式写的。
+ (BOOL)isIncludeChineseInString:(NSString*)str {}个方法看到上面的Chinese就明白了吧,是判断是否为中文然后传出布尔值。然后就是这个方法
+(NSString*)chineseConvertToPinYin:(NSString*)chinese,这个方法里面运用到HanyuPinyinOutputFormat,它可是造福中国人的把中文转化成汉语拼音的类。转化成拼音以后就用到
- (NSRange)rangeOfString:(NSString *)searchString
options:(NSStringCompareOptions)mask;这个系统方法了。很多方法还是没有剖析出来,我会再接再厉的。