Core data 排序CoreData NSFetchRequest首先精确匹配

Core data 排序CoreData NSFetchRequest首先精确匹配,core-data,nsfetchrequest,Core Data,Nsfetchrequest,我正在通过带有BEGINSWITH谓词的属性搜索CoreData实体。现在我想按相关性对结果进行排序,以便首先显示直接匹配 搜索字符串示例: "star" 结果列表: "star" # <- exact match should be first "starship" "stargazer" 我知道我可以将NSFetchedResultsController中的结果复制到可变数组中并在代码中排序,但如果可能的话,我希望避免这种情况 那我有没有办法把这个存档?可能是数据模型中的一些智能更

我正在通过带有BEGINSWITH谓词的属性搜索CoreData实体。现在我想按相关性对结果进行排序,以便首先显示直接匹配

搜索字符串示例:

"star"
结果列表:

"star" # <- exact match should be first
"starship"
"stargazer"
我知道我可以将NSFetchedResultsController中的结果复制到可变数组中并在代码中排序,但如果可能的话,我希望避免这种情况


那我有没有办法把这个存档?可能是数据模型中的一些智能更改或谓词技巧?

我找到了一种方法来实现这一点。我在这里发现了一个提示:

诀窍是按长度排序。精确匹配必须是最小长度值。
因此,我的排序描述符如下所示:

NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey:@"word.length"
                                                     ascending:YES];

我认为按长度排序应该行得通。类似于
“word.length”
好的,那么当您尝试这样做时发生了什么?它不是那样工作的。我稍后会调查,也许只是语法问题。最坏的情况是,我必须创建一个存储长度的列。好的,它确实适用于我的情况。精确匹配是第一位的。我将为我自己的问题提供一个答案。
NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey:@"word.length"
                                                     ascending:YES];