2011-07-23 77 views
0

在我的核心數據應用程序中,我有一個實體Person(它具有全名屬性)。尋找一個名稱的最簡單的方法是通過場,使謂詞搜索:核心數據 - 使用謂詞更好地搜索

[predicateArray addObject:[NSPredicate predicateWithFormat:@"fullname CONTAINS[cd] %@", searchString]]; 

但是從我所回升,這是一個正則表達式搜索,可以是昂貴的,特別是如果你要啓用實時搜索(即鍵入時搜索)以及列表非常大。有沒有更好的方法來做這個搜索?你能否以某種方式轉換fullName以便快速搜索?

+0

您是否做過測試以瞭解可以在實時搜索中以這種方式搜索多少項目?我不知道,但從prev的經驗,我敢打賭更多的2000項。你有超過2000件物品要搜索嗎? –

+0

由於它是一個聯繫人列表,它將大約有1000個平均值,但您可以想象有些人擁有更大的列表(特別是組織列表)。所以如果可能的話,我希望這可以擴展到10,000條。 –

+0

你打算把它連接到組合框嗎? –

回答

0

你可能感興趣的方法與此類似:

Core Data search optimization

基本上你創建一對夫婦的孩子搜索特定的實體,以優化的前幾個字符。

你可能也在尋找「開始於」而不是「謂詞」,你的謂語中很少有人用他們的名字的中間字母組織他們的聯繫人。他們通常首先爲Adam或Andy等輸入「A」,而不是「am」或「nd」。

+0

但是,如果他們只記得聯繫人的中間名或姓氏怎麼辦?在搜索結果中捕獲它也很重要。 –

+0

當然,但你仍然想使用開始而不是包含。 – ImHuntingWabbits