1

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

以下是具有 3 个字符串属性的实体的示例:Person (firstName, lastName, notes)

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

  • “Emily”、“Bridges”、“她很快就会到镇上。”
  • “约翰尼”、“威廉姆斯”、“这家伙真的很酷。”
  • “Will”、“Smith”、“他什么都不记得了”。

现在,让我们假设用户正在查找出现“will”并且我们运行不区分大小写的搜索。由于使用了orPredicateWithSubpredicates ,前面描述的所有三个人都将匹配单词“will”

理想情况下,出于相关目的,我希望按此顺序显示结果:

  • “Will”、“Smith”、“他什么都不记得了”。
  • “约翰尼”、“威廉姆斯”、“这家伙真的很酷。”
  • “Emily”、“Bridges”、“她很快就会到镇上。”

对于此搜索功能,“firstName”比“lastName”更相关,后者都比“notes”属性更相关。

由于我使用的是 UISearchDisplayController,因此我还使用了需要NSSortDescriptor的NSFetchedResultsController。我现在的问题是我将使用什么属性/键来初始化 NSSortDescriptor?

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

  • 1:对于“firstName”的匹配
  • 2:匹配“lastName”
  • 3:对于“笔记”的匹配

最终我想我可以尝试运行三个不同的请求,但后来我不得不放弃使用 NSFetchedResultsController 及其所有魔力......

我不知道我是否达到了 NSFetchedResultsController 的限制或其他东西,但任何指针都会很棒,谢谢!

乔斯。

4

0 回答 0