CFStringTransform 坑

项目里面的旧代码有个类似通讯录的需求,通讯录里的联系人根据姓名首字母分section显示。于是就需要获取首字母。
原代码里对于通讯里的联系人在本地建表进行了存储,但是对于首字母没有存储,采取的读数据库时即时解析首字母进行显示。采用就是系统的API
Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);
后来发现用户反映,这个页面卡顿情况特别严重,然后经过测试发现该API特别耗时引起。

后续就舍弃这个方法,采用在网上找到的一个开源库
PinYin4Objc是一个效率很高的汉字转拼音类库,智齿简体和繁体中文.
虽然转化效率有了明显的提高.但实际上当数据量达到一定量的时候,还是会很耗时。

但是实际上,我觉得最好的设计还是在存储联系人信息的时候,将首字母也一起存储在本地数据库中。这样在读取的时候才会不受数据量的影响。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目标——到达西天取经 阻碍——妖魔鬼怪都想吃唐僧肉 努力——孙悟空一路斩妖除魔 结果——唐僧被妖怪们多次抓去 意外...
    田慧煜阅读 249评论 0 1
  • 传神旗下语联网Woordee语翼笔译平台兼职招聘 语联网Woordee语翼笔译平台是为更好满足全球互联网译员的翻译...
    真猪奶茶0519阅读 159评论 0 0
  • 4月乍暖还寒,在班主任的“千叮咛万嘱咐”之下终于从简打包,只带了几件薄衫,却在到达的第一天戏剧性地被突如其来的雨浇...
    梦游安阅读 495评论 4 5
  • 希望我可以做一个温暖的人 可以偶尔冷漠 也可以偶尔善良 可以照亮世界 也可以自甘放纵 晚安
    我爱荔枝圆滚滚阅读 101评论 0 0
  • 第110课 StringBuilder和StringBuffer的使用_常用方法_方法链的实现 113课模拟Arr...
    MVP帅炸天阅读 253评论 0 0