gpt4 book ai didi

ios - 快速搜索和排序

转载 作者:可可西里 更新时间:2023-11-01 06:07:11 27 4
gpt4 key购买 nike

我整个下午都在研究搜索算法,我想听听一些意见。我正在做的一些事情是特定于 iOS 的,但一般概念不是。

我正在尝试显示一组数据,一个目录。在目录中,我有部门和人员。我知道这听起来像是教科书的例子,听我说完。这不是家庭作业,我保证。 (我可以提供我正在处理的内容的屏幕截图。)

我有一个条目数组,其中有这两种目录条目。我需要按名称对条目进行排序,然后将数组分解为更小的数组,其中每个子数组包含以相同字母开头的条目。

此外,我需要考虑用户可能输入的搜索字符串。

我的大致流程是这样的:

  1. 过滤所有符合类型和搜索字符串的条目(如果有的话)。对于这一步,我使用 NSPredicate:

    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];
  2. 按字母顺序对结果进行排序。

    array  = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [((BRKDirectoryEntry *)obj1).comperableTitle compare:((BRKDirectoryEntry *)obj2).comperableTitle];
    }];
  3. 将结果分解成更小的数组。为了性能,如果我们正在搜索,我会跳过这一步,但它似乎没有帮助。

    if(alphabetized)
    {
    array = [self _alphabetizedArrayFromPresortedArray:array];
    }

它在总共 950 个条目上的表现非常糟糕。

现在,对于我的默认显示,我可以简单地将排序后的数据缓存在内存中,然后显示和滚动执行得很好,但是对于按类型搜索,根本没有办法实现流畅的性能用户期望的。

有任何指示或提示吗?

最佳答案

是的。忘记文件并将其保存在数据库中。创建你的索引一切都变成了一个简单的 SQL 语句。

关于ios - 快速搜索和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25559675/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com