UISearchDisplayController / NSFetchedResultsController具有自定义排序顺序

我在我的应用中实现了搜索功能。 我希望用户在给定实体的多个属性中同时查找单词。

下面是一个具有3个String属性的实体的例子: Person (firstName,lastName,notes)

我们使用一个3人模拟数据集:

  • “艾米莉”,“桥梁”,“她很快就会在城里。”
  • “约翰尼”,“威廉姆斯”,“这个家伙真酷。”
  • “Will”,“Smith”,“他出于某种原因不记得任何事情。”
  • 现在,我们假设用户正在查找“will”事件 ,并且我们运行不区分大小写的搜索。 所有三个以前描述的人都会匹配“will”这个词,这要归功于使用orPredicateWithSubpredicates

    理想情况下,我希望将结果按此顺序显示以达到相关性目的:

  • “Will”,“Smith”,“他出于某种原因不记得任何事情。”
  • “约翰尼”,“威廉姆斯”,“这个家伙真酷。”
  • “艾米莉”,“桥梁”,“她很快就会在城里。”
  • 对于此搜索功能,“firstName”比“lastName”更具相关性,它们比“notes”属性更相关。

    由于我使用的是UISearchDisplayController,我也用它需要一个NSSortDescriptorNSFetchedResultsController。 现在我面临的问题是我要用什么属性/键来初始化NSSortDescriptor?

    我已经经历了许多帖子,并认为一个瞬态属性可以帮助我解决这个问题,但我无法弄清楚如何/何时设置这个可以命名为“sortKey”的瞬态属性并设置为这些值:

  • 1:对于“firstName”的匹配
  • 2:对于“lastName”的匹配
  • 3:对于“笔记”
  • 最终我想我可以尝试运行三个不同的请求,但是我不得不放弃使用NSFetchedResultsController及其所有的魔法......

    我不知道我是否达到NSFetchedResultsController的极限,但是任何指针都很棒,谢谢!

    乔斯。

    链接地址: http://www.djcxy.com/p/6137.html

    上一篇: UISearchDisplayController/NSFetchedResultsController with custom sort order

    下一篇: Transient sectionNameKeyPath & NSSortDescriptor NSFetchedResultsController