Ios 快速搜索和排序
我整个下午都在研究一个搜索算法,我想听听大家的意见。我所做的一些工作是针对iOS的,但一般概念并非如此 我试图显示一组数据,一个目录。在目录中我有部门和人员。我知道这听起来像教科书上的例子,听我说。这不是家庭作业,我保证。(我可以提供我正在进行的工作的屏幕截图。) 我有一个条目数组,其中有两种目录条目。我需要按名称对条目进行排序,然后将数组分成更小的数组,其中每个子数组包含以相同字母开头的条目 此外,我需要说明用户可以输入的搜索字符串 我的一般过程是:Ios 快速搜索和排序,ios,objective-c,arrays,performance,sorting,Ios,Objective C,Arrays,Performance,Sorting,我整个下午都在研究一个搜索算法,我想听听大家的意见。我所做的一些工作是针对iOS的,但一般概念并非如此 我试图显示一组数据,一个目录。在目录中我有部门和人员。我知道这听起来像教科书上的例子,听我说。这不是家庭作业,我保证。(我可以提供我正在进行的工作的屏幕截图。) 我有一个条目数组,其中有两种目录条目。我需要按名称对条目进行排序,然后将数组分成更小的数组,其中每个子数组包含以相同字母开头的条目 此外,我需要说明用户可以输入的搜索字符串 我的一般过程是: 筛选与类型和搜索字符串匹配的所有条目(如果
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type == %i AND searchableContents B[cd] %@", type, searchString];
if (!searchString || searchString.length == 0)
{
predicate = [NSPredicate predicateWithFormat:@"type == %i", type];
}
NSArray *array = [_directoryContents filteredArrayUsingPredicate:predicate];
array = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [((BRKDirectoryEntry *)obj1).comperableTitle compare:((BRKDirectoryEntry *)obj2).comperableTitle];
}];
if(alphabetized)
{
array = [self _alphabetizedArrayFromPresortedArray:array];
}
有什么提示吗?有。忘记文件并将其保存在数据库中。创建索引所有内容都变成一个简单的SQL语句 我仍然惊讶于有多少人问“我在做XYZ,它太慢了。我怎样才能让它更快?”好像其他人的猜测有很大的机会。有一种瑞士军刀不能丢的方法。这里有一个(在python中,但你会明白的)。只是一个小提示:使用谓词比这里所示的快速枚举慢得多:(节枚举和高阶消息传递),我认为如果(!searchString | | searchString.length==0)到if(!searchString.length),可以简化这行代码