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