Objective c 核心数据-使用谓词进行更好的搜索

Objective c 核心数据-使用谓词进行更好的搜索,objective-c,core-data,Objective C,Core Data,在我的核心数据应用程序中,我有一个实体Person(具有全名属性)。搜索名称的最简单方法是通过以下字段进行谓词搜索: [predicateArray addObject:[NSPredicate predicateWithFormat:@"fullname CONTAINS[cd] %@", searchString]]; 但据我所知,这是一个可能很昂贵的正则表达式搜索,特别是如果您想启用实时搜索(即在键入时搜索)并且列表非常大的话。有没有更好的方法来进行搜索?您能否以某种方式转换全名,使其更

在我的核心数据应用程序中,我有一个实体Person(具有全名属性)。搜索名称的最简单方法是通过以下字段进行谓词搜索:

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

但据我所知,这是一个可能很昂贵的正则表达式搜索,特别是如果您想启用实时搜索(即在键入时搜索)并且列表非常大的话。有没有更好的方法来进行搜索?您能否以某种方式转换全名,使其更快地进行搜索

您可能对类似的方法感兴趣:

基本上,您可以创建几个特定于子搜索的实体来优化前几个字符


你可能也在寻找谓词中的“开始于”而不是“包含”,人们很少用名字的中间字母来组织他们的联系人。他们通常先为Adam或Andy等键入“A”,而不是“am”或“nd”。

您是否做过测试,看看在实时搜索中可以用这种方式搜索多少项?我不确定,但根据以前的经验,我打赌超过2000件。你有超过2000个项目要搜索吗?因为这是一个联系人列表,平均大约有1000个,但是你可以想象一些人有一个更大的列表(特别是组织列表)。所以,如果可能的话,我希望它可以扩展到10000个条目。你打算把它连接到一个组合框上吗?但是如果他们只记得联系人的中间名或姓氏呢?在搜索结果中也要捕获它,这一点很重要。当然,但您仍然希望使用以开头而不是包含。