あるファイル形式から別のファイル形式に簡単に変換できるアプリケーションを構築しようとしています。ソース ファイルをドック タイルにドラッグすると、出力ファイルがソース ファイルと一緒に (同じディレクトリに) 作成されます。
ドキュメントを読んだ後、すべてが正しくセットアップされました。
私の Info.plist には次のものが含まれています。
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
my_src_type
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
[...]
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
my_dest_type
</array>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>NSIsRelatedItemType</key>
<true/>
[...]
</dict>
</array>
ドキュメントを正しく読んでいる場合、これにより、アプリはmy_src_type
ドラッグアンドドロップを介してファイルを受け入れmy_dest_type
、入力ファイルと同じディレクトリにファイルを出力できるようになります。もちろん、サンドボックスにそれを知らせた場合に限ります。
そのために、SimpleFilePresenter
次のような があります。
@interface SimpleFilePresenter : NSObject<NSFilePresenter>
@property (atomic, strong) NSURL *presentedItemURL;
@property (atomic, strong) NSURL *primaryPresentedItemURL;
@end
@implementation SimpleFilePresenter
- (NSOperationQueue *)presentedItemOperationQueue {
return [NSOperationQueue mainQueue];
}
@end
出力ファイルを作成する許可を要求するとすぐaddFilePresenter:
に、コンソールに次のエラーが表示されます。
2013-04-26 6:33:52.741 PM my_app[27639]: NSFileSandboxingRequestRelatedItemExtension: an error was received from pboxd instead of a token. Domain: NSPOSIXErrorDomain, code: 1
2013-04-26 6:33:52.741 PM my_app[27639]: +[NSFileCoordinator addFilePresenter:] could not get a sandbox extension. primaryPresentedItemURL: file://[...]/file.my_src_type, presentedItemURL: file://[...]/file.my_dest_type