Info.plistで指定されたタイプのファイルをドックアイコンにドロップして(またはFinderで開くことを選択して)、ファイルのフルパスを使用してメソッドを呼び出すにはどうすればよいですか?
5 に答える
Info.plistのCFBundleDocumentTypes配列(「LSItemContentTypes」または「CFBundleTypeExtensions」のいずれか)を適切に設定した場合は、NSApplicationデリゲートを設定し、デリゲートメソッドapplication:openFile:を実装するだけです。
一度に複数のファイルが削除されることを期待している場合は、application:openFiles:を実装してください。
約束されたファイル(NSFilesPromisePboardType
/ kPasteboardTypeFileURLPromise
)については、Dockのアプリケーションアイコンに約束されたファイルをドロップするを参照してください。
これがXcode5の更新されたソリューションです。AppDelegate.mで
-(BOOL)application:(NSApplication *)sender openFile:(NSString *)filename
{
NSLog(@"%@", filename);
return YES;
}
Xcodeのセットアップでは、[プロジェクト]>[ターゲット]>[情報]の[ドキュメントタイプ]を選択します。
正しく入力するか削除する必要がある空の「ドキュメントコンテンツタイプUTI」配列がある場合は、Info.plistの設定を確認してください。
Info.plistは次のようになります。
現在のシステムでは、古いスタイルの4文字タイプ(上記など)の代わりにUTIを使用できますfold
。Xcodeのドキュメントタイプエディタで、次のコマンドを使用して新しいタイプを作成します。
- 名前:フォルダ
- 識別子:public.folder
public.folder
のサブタイプですpublic.directory
。ユーザーにそのように表示されるディレクトリに一致します。つまり、ラッパーpublic.folder
のようなパッケージではありません。.app
サイドペインのターゲットグループでアプリケーションを選択し、getinfoを使用します。次に、新しいウィンドウで[プロパティ]タブを選択して、新しいドキュメントタイプを追加します。便宜上「Folder」という名前を付けます。OSタイプは「fold」である必要があります。そのままにしておくことができるストアの種類と役割。
実際にドキュメントベースのアプリを作成している場合、パスを提供するように設定すると、必要以上の作業を行うことができます。ドキュメントベースのアプリケーションテンプレートを使用するだけです。ドキュメントコントローラーは、適切なクラスのインスタンスを作成します。そのクラスを書くだけです。
この方法で作成したアプリケーションは、ファイルのドロップを(ドキュメントとして開くことにより)無料で処理します。