今日それを行う方法の最新の要約として、ここに私がしなければならなかったことの段階的なガイドがあります:
Xcode を使用して、 Cocoa アプリケーションテンプレートからアプリケーション プロジェクトを作成します。
[ドキュメント ベースのアプリケーションの作成] をオンにして、「ドキュメント拡張子」に提案されているものはそのままにしておきます (ファイル名拡張子をここで削除すると、[次へ] ボタンを有効にすることが拒否されるため、後で行います)。
プロジェクトのアイコンをクリックし、[情報] タブと [ドキュメント タイプ] に移動します。
Extensionsフィールドの内容を削除します。フォルダーに特定のファイル名サフィックスは必要ありません
public.folderをIdentifierフィールドに書き込みます。
CFBundleTypeOSTypes配列の [追加のドキュメント タイプ プロパティ]の下に、 foldというエントリを 1 つ追加します(これらの 4 つの小文字のみ)。それが必要かどうかはわかりませんが、少なくとも正しいです。
バンドルがチェックされていないため、ドキュメントが配布されていることを確認してください。
NSDocumentController
次のメソッドを含むサブクラスをプロジェクトに作成します。名前を付けULIFolderDocumentController
ます。
-(void)openDocument:(id)送信者
{
NSOpenPanel *panel = [NSOpenPanel openPanel];
[パネル setCanChooseFiles:いいえ];
[パネル setCanChooseDirectories:YES];
[パネル setAllowsMultipleSelection:NO];
[パネル beginWithCompletionHandler: ^( NSInteger 結果 )
{
if (結果 == NSFileHandlingPanelOKButton)
{
NSURL* selectedURL = [[パネル URL] objectAtIndex:0];
NSLog(@"選択した URL: %@", selectedURL);
[自己 openDocumentWithContentsOfURL: selectedURL
表示: はい
completionHandler: ^(NSDocument * _Nullable ドキュメント、BOOL documentWasAlreadyOpen、NSError * _Nullable エラー)
{
NSLog(@"%spened document %@ (%@)", (documentWasAlreadyOpen? "Reo" : "O"), document, error);
}];
}
}];
}
-init
の代わりにサブクラスをロードする行をアプリ デリゲートのメソッドに追加しますNSDocumentController
。これは簡単です。共有オブジェクトをリクエストするだけです:
[ULIFolderDocumentController sharedDocumentController]; // システムの NSDocumentController を私たちのものでオーバーライドします。
- それを試してみてください!:)