1

ドキュメントパッケージ(バンドル)をデータとして使用するCocoaアプリケーションを作成しています。拡張子を指定すると、Finder は拡張子の付いたフォルダをドキュメントとして適切に認識するようになりました。しかし、フォルダの拡張子がまだ表示されているので、デフォルトで非表示にしたい (アプリケーション バンドルのように) これを行うオプションはありますか?

4

1 に答える 1

3

-setAttributes:ofItemAtPath:error:のメソッドを使用してNSFileManager、任意のファイルのファイル属性を設定できます。この場合、NSFileExtensionHiddenキーの値を設定します。

これを保存したドキュメントに適用するに-writeToURL:ofType:error:は、サブクラスでオーバーライドしNSDocument、ドキュメントが保存されたらファイル拡張子を非表示に設定します。

- (BOOL)writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError
{
    //call super to save the file
    if(![super writeToURL:absoluteURL ofType:typeName error:outError])
        return NO;

    //get the path of the saved file
    NSString* filePath = [absoluteURL path];

    //set the file extension hidden attribute to YES
    NSDictionary* fileAttrs = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] 
                                                          forKey:NSFileExtensionHidden];
    if(![[NSFileManager defaultManager] setAttributes:fileAttrs 
                                         ofItemAtPath:filePath
                                                error:outError])
    {
        return NO;
    }
    return YES;
}
于 2010-02-09T01:00:08.127 に答える