gpt4 book ai didi

ios - 按值逐步过滤 NSDictionary 作为一种类型

转载 作者:行者123 更新时间:2023-11-28 21:40:17 25 4
gpt4 key购买 nike

目前,我正在使用一个名为 listOfAllWords 的大型 NSDictionary,其中包含一个单词和相应的分数:

WORD  : SCORE
-------------
hello : 100
have : 90
help : 80
held : 70
hot : 60
hemp : 50
...

我的目标是,当用户输入时,根据他们的得分 从列表中提供最多 3 条建议。

例如,如果用户只输入了“h”,则 3 个推荐将依次为“你好”、“有”和“帮助”。但是,如果用户输入了已经是“hel”,那么建议将是“hello”、“help”和“held”。

基于类似过滤 UITableViews 的范例,过滤的方式是做这样的事情:

    for (word* food in [listOfAllWords allKeys]){
NSRange nameRange = [word rangeOfString:userInput options:NSCaseInsensitiveSearch];
if(nameRange.location != NSNotFound
{
[filteredData addObject:word];
}
}

但是,我遇到的问题是如何合并过滤器以同时包含 score 组件,以便它包含按分数排名的推荐。非常感谢您的帮助。

最佳答案

最直接的方法可能是这样的:

NSArray* matchingWords = [listOfAllWords.allKeys filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", userInput];
NSArray* sortedMatches = [matchingWords sortedArrayUsingComparator:^NSComparisonResult (NSString* word1, NSString* word2) {
// Look up the score of each word and compare them. I put word2's score on the left to get descending (highest first) result.
return [listOfAllWords[word2] compare:listOfAllWords[word1]];
}];
// Limit to 3 matches
if (sortedMatches.count > 3)
sortedMatches = [sortedMatches subarrayWithRange:NSMakeRange(0, 3)];

绝对有可能提高速度,但除非您已经测量到真正的性能问题,否则不要费心。

关于ios - 按值逐步过滤 NSDictionary 作为一种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32447236/

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