作者fallenheart (水中落叶)
看板MacDev
标题[问题] iPhone的Address Book Search
时间Fri May 28 09:30:16 2010
大家好,想请问的是关於iPhone里通讯录搜寻的问题。
因为手机的键盘上都有英文字母对应,比如说
2是
abc,
3是
def...
所以我想要在拨号的时候,除了用号码去搜寻通讯录里的电话号码外,
同时也用英文字母的排列去搜寻通讯录里的姓名。
比如说我按
23,除了针对23去做电话号码的搜寻外,
也同时用
ad、ae、af、bd、be、bf、cd、ce、cf这9个字串去做姓名的搜寻。
我的做法是先将将通讯录的资料取出存在一个NSArray里,
然後将字母排列组合的结果,各别写成一个NSPredicate,
例如:"
firstname contains [cd]
ad OR lastname contains [cd]
ad...",
接下来的部分,原先我是将每一个NSPredicate写完後,
就去对通讯录做filteredArrayUsingPredicate,以便取出对每个字串的搜寻结果,
如果出来的结果是0,那我就会将这个字串删除,下次就不会再对这个字串做排列组合。
比如说我按了23之後,ad这个字串去搜寻的结果是0,那就将ad删除,
接下来我按4的时候,就不会把ad这个字串去跟g、h、i做排列组合。
我想这样可以控制字串数目的增加,以便增进效率,
但事与愿违,这样子下去搜寻的速度很慢。
後来我就乾脆将所有的NSPredicate,
用NSCompoundPredicate orPredicateWithSubpredicates结合成一个NSPredicate,
只对通讯录做一次filteredArrayUsingPredicate。
但这样子搜寻还是很慢。
问题叙述有点长,
不知道大家有没有什麽建议,可以帮我解决搜寻速度的问题,
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.29.185.99