[問題] iPhone的Address Book Search

看板MacDev作者 (水中落葉)時間15年前 (2010/05/28 09:30), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
大家好,想請問的是關於iPhone裡通訊錄搜尋的問題。 因為手機的鍵盤上都有英文字母對應,比如說2abc3def... 所以我想要在撥號的時候,除了用號碼去搜尋通訊錄裡的電話號碼外, 同時也用英文字母的排列去搜尋通訊錄裡的姓名。 比如說我按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
文章代碼(AID): #1B_noiSN (MacDev)
文章代碼(AID): #1B_noiSN (MacDev)