[問題] iPhone的Address Book Search
大家好,想請問的是關於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
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章