NSPredicate - 首先显示完全匹配项

NSPredicate - Show exact match first

提问人:Akshay Phulare 提问时间:3/22/2021 最后编辑:Joakim DanielsonAkshay Phulare 更新时间:3/22/2021 访问量:89

问:

我有一个以下数组

NSArray *arr = [NSArray arrayWithObjects:
                @"Suresh",
                @"Dr. Akshay Phulare",
                @"Akshay",
                @"Ramesh",
                @"Dinesh",
                @"Akshay Phulare",
                nil];

如果我使用以下谓词搜索“Akshay”

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tagName CONTAINS[c] %@",containSearchTerm];

我给出以下结果:["Dr. Akshay Phulare","Akshay","Akshay Phulare"]

这是对的,因为每个字符串都包含单词“Akshay”。

当前结果是根据数组中的单词序列给出结果。但我首先想要精确匹配,然后再进行剩余的结果。["Akshay","Akshay Phulare","Dr. Akshay Phulare"]

iOS Objective-C nsArray nsPredicate

评论

0赞 skaak 3/22/2021
您必须分两个步骤执行此操作 - 1.像现在一样提取数组,然后 2.根据您的标准进行排序。这可能是最简单的,但你也可以尝试将所有这些逻辑捕获到一个聪明的排序算法中。看一看 stackoverflow.com/questions/6946642/how-to-sort-nspredicate
0赞 Larme 3/22/2021
您需要自定义排序。但是你需要定义什么是逻辑。如果你也有(区分大小写的差异),如果你也有怎么办?对于不完全匹配,排序逻辑是什么?从第一个开始?字符数差异?数组中的初始位置等。了解所有这些情况后,您就可以构建自定义排序。akshay"Akshay phulare"

答: 暂无答案