一、获取字符串的首字母

 

pinyin.m中将汉字unicode码转换成对应的字母。可查看pinyin

PS:暂未找到pinyin文件最原始出处的链接。

 


二、通讯录首字母列表、分组列表

 

功能需求:做成按字母分组的通讯录,如下图

contacts

整理编程思路:

1、使用实体对象Contact装载联系人数据。

2、将联系人(Contact)列表转换成两个类数据:首字母列表(不重复),按首字母分组的联系人列表。

3、使用Section和viewForHeaderInSection实现按字母分组的通讯录列表样式。

4、使用SectionIndex实现右侧索引条。


1、实体对象Contact

 

根据自己的需求定义联系人实体

 

 2、转化列表数据

 

将联系人姓名字符串列表转化为对应的拼音列表(排序)。

 

通过拼音列表获取“首字母列表”(去重)。

 

通过拼音列表获取“按首字母分组的联系人列表”。

 

PS:以上根据YUChineseSorting改编,它实现的是string的转化,本文实现的是实体对象的转化。

 

3、通讯录列表样式

 

使用“按首字母分组的联系人列表”,设定section个数,及装配cell。

使用“首字母列表”及tableView:viewForHeaderInSection方法,装配section的headerView。

 

4、右侧索引条

 

使用“按首字母分组的联系人列表”及sectionIndexTitlesForTableView:tableView方法,装配sectionIndex

 


三、匹配搜索

三种方式:中文精确匹配、首字母匹配、拼音匹配。

 

中文精确匹配:

 

 

首字母匹配:

 

上文中,第二大点的步骤二——获取两类列表数据——中的ReturnSortObject方法,就可以获取到中文字符串对应的首字母列表,只要类似上述中文精确匹配的方式,定位出搜索关键词对应的位置。

 

 拼音匹配:

 

使用到第三方框架PinYin4Objc,PinYinForObjc的类方法chineseConvertToPinYin,就可以完成拼音匹配搜索。

 

 

分类: 碎碎念