首页 > 代码库 > 使用CFStringTransform将汉字转成拼音,非常耗时!
使用CFStringTransform将汉字转成拼音,非常耗时!
最近做一个通讯录项目,需要将联系人读入app内存(通讯录有400人左右),并依照首字母排序。这里使用了在将汉字转化成拼音的时候,iOS系统自带接口:
注意self.latinString需要是一个mutable的string
//1.将非字符串转化成拉丁字母 CFStringTransform((__bridge CFMutableStringRef)self.latinString, NULL, kCFStringTransformMandarinLatin, NO); CFStringTransform((__bridge CFMutableStringRef)self.latinString, NULL, kCFStringTransformStripDiacritics, NO);
但是,app启动时候,非常的慢。因为在加载联系人,并且将汉字转化成pinyin。下面看看对比结果:
如果直接转化:
>> 2014-10-17 16:14:03.988 [contact_log]ContactList.m:87 -[ContactList loadContactFromAB] :_addressBookEngine loadAdressBook10.022583
加载一遍用了10秒。
我的做法是:既然通讯录里的人不会经常改变,可以将所有人的名字——pinyin缓存起来(字典),这样读取的时候,从字典里获取拼音,应该会快很多!结果验证了我的猜想:
>> 2014-10-17 16:18:47.992 [contact_log]ContactList.m:87 -[ContactList loadContactFromAB] :_addressBookEngine loadAdressBook0.641795
加载一次不到1秒了。
使用CFStringTransform将汉字转成拼音,非常耗时!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。