码迷,mamicode.com
首页 > 其他好文 > 详细

使用CFStringTransform将汉字转成拼音,非常耗时!

时间:2014-10-17 16:53:25      阅读:172      评论:0      收藏:0      [点我收藏+]

标签: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 loadAdressBook 10.022583

加载一遍用了10秒。


我的做法是:既然通讯录里的人不会经常改变,可以将所有人的名字——pinyin缓存起来(字典),这样读取的时候,从字典里获取拼音,应该会快很多!结果验证了我的猜想:

>> 2014-10-17 16:18:47.992 [contact_log] ContactList.m:87 -[ContactList loadContactFromAB] :_addressBookEngine loadAdressBook 0.641795

加载一次不到1秒了。


使用CFStringTransform将汉字转成拼音,非常耗时!

标签:cfstringtransform   汉字转拼音   

原文地址:http://blog.csdn.net/hherima/article/details/40187953

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!