2011-07-23 41 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