ドロップダウン メニューから選択して一連のラジオ局を再生するアプリケーションがあります。理想的には、いくつかのコードを追加して、スポットライト検索でドロップダウン内のアイテムを返し、アプリケーション自体から行ったかのようにアプリケーションを開くようにしたいと考えています。
スポットライトのドキュメントでは、インデックスを作成する隠しファイルの作成に関するいくつかの古い投稿を除いて、これが可能かどうかの手がかりはありません。
手がかりはありますか?
ドロップダウン メニューから選択して一連のラジオ局を再生するアプリケーションがあります。理想的には、いくつかのコードを追加して、スポットライト検索でドロップダウン内のアイテムを返し、アプリケーション自体から行ったかのようにアプリケーションを開くようにしたいと考えています。
スポットライトのドキュメントでは、インデックスを作成する隠しファイルの作成に関するいくつかの古い投稿を除いて、これが可能かどうかの手がかりはありません。
手がかりはありますか?
個々のステーションは内部でどのように保存/表現されていますか? Spotlight は 1 ファイル 1 検索結果です。単一のライブラリ DB または同様のものを使用するアプリは、従来、これらのアイテムを ~/Library/Caches フォルダーのサブフォルダーにエクスポートします。検索可能にしたいアイテムごとに 1 つのスポットライト「スタブ」ファイルを作成します。この「スタブ」ファイルには、独自の個別の拡張子/doctype (アプリで引き続き開くことができます) があり、それが Spotlight インポーターのベースになります。
前例:AddressBook.app.
たとえば、私のアプリの 1 つには、中央の (ドキュメント ベースではない) トランスクリプト ライブラリ データベースがあります。ユーザーが個々のトランスクリプトを検索して、それらを Spotlight で個別の結果として表示できるようにしたかったのです。これを回避する唯一の方法は、私のアプリケーションで、検索可能なテキスト表現を保持する「.transcriptstub」ファイルの使い捨てコレクションを作成して維持することでした。
「使い捨て」と言うのは、../Caches 内のものは、欠落している場合にアプリケーションによって簡単に再作成されることを意図しているためです。アプリケーションの起動時に必要に応じて更新し (長時間の起動を防ぐために個別の NSOperation として)、実行時に変更されるたびに個別に更新します。
アプリケーションがこれらのスタブの 1 つを開くために渡されると、ファイル内の識別子 (UUID など) を使用して、データベース内でそれを探します。一致する場合は、UI でその項目を選択します。