2018.3.19
demo下载地址 GitHub
demo是基于objective-c的纯代码实现,已剥离xib,关于xib的本地化实现,这里没有。
README
iOS中/英/韩简单通讯录排序(Objective-C)
PS,仅考虑首个字符的排序问题,同时未考虑性能优化的问题
1.英文通讯录排序;
a.直接取出首个字符,转成大写字母并将其作为key,按Key存入相应数组即可,
2.中文通讯录排序;
a.首先取出首个字符,
b.利用CFStringTransform方法获得中文字对应的拼音首字母,因为多音字的问题,
需要额外针对常用的多音字取某一常用音的处理,详见方法 - (NSString *)transformMandarinToLatin:(NSString *)hanzi
c.将字母转成大写,按key将原始字符串存入相应数组,
3.韩文通讯录排序;
a.首先取出首个字符,
b.确定通讯录需要的key为韩文19个初始辅音,
c.利用NSString中的方法characterAtIndex:将首个字符进行(ASCII转Unicode)处理,并获得一个Unicode值,
d.根据(资料参考2.)提到的资料, 利用公式 (int)((Unicode - 44032) / 588) 来解构,
e.在初始辅音数组中找到对应下标的初始辅音字符,
f.将上面解构出的初始辅音字符作为key,按key将原始字符串存入相应数组,
主要示例文件
简单的代码实现中英韩通讯录排序,便于二次开发/自定义需求的实现。
RFSimpleAddressBookSortingView.h
RFSimpleAddressBookSortingView.m
调用方式
1.示例代码:详见demo中的 ViewController.m 文件。
资料参考:
1.Sorting and Grouping of Korean Character (Not familiar with Korean language)
2.Korean language and computers
3.Unicode编码转换,ASCII转Unicode
4.NSString, characterAtIndex:
5.CFString
网友评论