gpt4 book ai didi

ios - 如何高效过滤约20万个NSDictionaries的NSArray?

转载 作者:行者123 更新时间:2023-11-29 03:21:38 26 4
gpt4 key购买 nike

我正在开发一个示例应用程序,其中每次用户在搜索栏中输入任何字符时,我都必须根据输入的条件过滤 200,000 个 NSDictionary 元素的 NSArray人物。 NSDictionary 仅包含两个键,即“English”和“Meaning”;

到目前为止,我在 UISearchBar delegate 方法中执行以下操作

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"%K contains[cd] %@",@"English",searchText];

_searchResult = [_dictionaryData filteredArrayUsingPredicate:searchPredicate];
}

我觉得这不是执行此操作的正确方法,而且过滤也需要时间。

附言- NSArray 我正在使用核心数据填充

最佳答案

如果您强调效率,您应该将给定的单词音译成某种仅由 ASCII 字符组成的“规范化”形式。将这些话保存在专用的 NSArray 中或其他某种容器(例如 std::vector )。

搜索字符串必须以相同的方式音译。然后,搜索功能将是高效的,因为它只需要找到给定的搜索字符串作为给定单词的子字符串。

您可以在不使用谓词的情况下实现搜索算法。最好不要使用 NSArrayNSString ,而是使用 std::vector<std::string> ,即使用 C++。

您通过在附加 NSDictionary 中查找来获得找到的(规范化的)单词的含义.

要将字符串转换为音译形式,您可以查看以下引用资料:

关于ios - 如何高效过滤约20万个NSDictionaries的NSArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21017457/

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