【问题标题】:Swift 2.0 Core Spotlight API - search only for titleSwift 2.0 Core Spotlight API - 仅搜索标题
【发布时间】:2015-08-25 09:10:14
【问题描述】:

我正在 iOS 9 中测试新的 Core Sportlight API 功能。索引过程运行良好,但有没有办法定义索引项只能通过“title”属性而不是“title”和“描述”?

也许你已经掌握了比我更多的信息。

【问题讨论】:

  • 我确实有类似的要求,我的应用有项目和笔记,两者都是可搜索的。对于注释,我想将项目名称显示为描述。但是,这使得当我搜索与该项目匹配的内容时,该项目及其所有注释都会出现。听起来 Apple 不希望我们在描述字段中添加真正的“描述”以外的任何内容。

标签: swift api spotlight ios9


【解决方案1】:

我已经尝试使用 Objective C 来做这件事,而且效果很好。

这取决于使用“CSSearchableAttributeSet”的实现。 在obj C中,有很多CSSearchableAttributeSet的实现,比如

  1. CSSearchableItemAttributeSet_General
  2. CSSearchableItemAttributeSet_Document
  3. CSSearchableItemAttributeSet_Image 和其他人。

我在我的代码中使用了 CSSearchableItemAttributeSet_General,我只能通过 title 属性进行搜索。事实上,CSSearchableItemAttributeSet 的特定实现甚至没有“描述”属性。

因此,根据您要搜索的对象类型,您可以使用特定的实现。

我相信它也会是 swift 中的同一个等价类。

-光辉

【讨论】:

  • 只有在我不提供 contentDescription 属性的情况下,我才能通过 title 属性进行搜索。但我想要 contentDescription 并且只想在标题中搜索。还是谢谢!
  • 您是否有特别的理由想要这样做?我认为内容描述也是基于特定术语的索引。您可以使用“主题”或“种类”属性来存储不会用于搜索的字符串数据。
  • 是的,这是有原因的:例如,我有 100 个具有固定名称(例如“颜色”)的索引项和计数索引。那是我的头衔。在我的描述中,我还有一些其他数字,例如 RGB 值(例如“230,78,123”,“22,178,210”,...)。每个索引项目都有其他描述编号。当我现在搜索“Color 78”时,不仅出现标题为“Color 78”的项目 - 描述中还有一些其他带有此编号的项目。如果有足够的数字“78”,例如我搜索的项目“颜色 78”没有出现在前四个结果中 - 那是我正在搜索的不好的原因。
  • 好吧,我不确定它的用途。您创建的 CSSearchableItem 将 CSAttributeSet 作为它可以索引的元数据。为什么您需要在属性集中存储一些值,例如您提到的 RGB 值,但又不希望它被搜索?因为一旦您从 Spotlight 结果中获得对应用程序的调用,您得到的只是唯一标识符。您拥有的所有其他属性无论如何都不可用。
  • 我在这一点上提交了一个雷达 - 能够将 contentDescription 标记为不可搜索(与使用自定义属性键相同的方式)。我可以看到许多用例,您希望提供描述以帮助选择正确的结果,但描述不会影响结果。我建议你做同样的@KevinLieser(21505746 对任何苹果人)
猜你喜欢
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 2018-11-16
  • 2017-01-26
  • 1970-01-01
  • 2018-08-28
相关资源
最近更新 更多