一、获取字符串的首字母

  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,就可以完成拼音匹配搜索。    

分类: 碎碎念

发表评论

电子邮件地址不会被公开。 必填项已用*标注