使用Spotlight搜索结果打开特定状态的应用程序

时间:2010-10-24 20:02:08

标签: objective-c cocoa spotlight

我有一个应用程序,通过从下拉菜单中选择它们来播放一系列广播电台。理想情况下,我想添加一些代码,以便聚焦搜索返回下拉列表中的任何项目并打开应用程序,就好像您是从应用程序本身中执行此操作一样。

聚光灯文档没有提供关于这是否可行的线索,除了我发现的关于创建要编制索引的隐藏文件的一些旧帖子。

任何线索?

1 个答案:

答案 0 :(得分:3)

您的个人电台如何在内部存储/代表? Spotlight是一个文件一个搜索结果。具有单个库DB或类似文件的应用程序传统上将这些项目导出到〜/ Library / Caches文件夹的子文件夹中。您要为每个要搜索的项目编写一个聚光灯“存根”文件。这个“存根”文件将有自己独立的扩展名/文档类型(您的应用程序仍然可以打开),这就是您将Spotlight导入程序作为基础。

判例:AddressBook.app。

例如,在我的一个应用程序中,有一个中央(非基于文档的)成绩单库数据库。我希望用户能够搜索单个成绩单,并将它们显示为Spotlight中的单独结果。解决这个问题的唯一方法是我的应用程序创建和维护一个包含可搜索文本表示的“.transcriptstub”文件的一次性集合。

我说“一次性”是因为../Caches中的内容很容易被您的应用程序重新创建,如果遗失的话。如果需要在应用程序启动时更新它们(作为单独的NSOperation以防止长时间启动),以及在运行时修改它们的每一个。

当应用程序被其中一个存根打开时,它会在文件中使用一些标识符(也许是UUID?)并在数据库中查找它。如果匹配,则在UI中选择该项目。