2010-02-03 90 views
1

我正在製作一個Cocoa應用程序,它使用文檔包(bundle)作爲數據。 我指定了一個擴展名,Finder現在可以很好地識別擴展名爲文件的文件夾。 但文件夾的擴展名仍然顯示,我想默認隱藏它(如應用程序包)是否有一個選項可以做到這一點?如何使Cocoa文件包的類型默認隱藏它的擴展名?

回答

3

您可以使用-setAttributes:ofItemAtPath:error:方法NSFileManager來設置任何文件的文件屬性。在這種情況下,您要設置NSFileExtensionHidden鍵的值。

要在NSDocument子類將此您保存的文檔,你可以覆蓋-writeToURL:ofType:error:然後將文件擴展名,一旦文件被保存隱藏:

- (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; 
} 
+0

謝謝!這是每個文件方法還是每種類型(或擴展)方法?這是不可能的設置我的文件類型的默認行爲? – Eonil 2010-02-09 08:29:33

+0

這是每個文件,它在文件上設置擴展屬性。我認爲沒有辦法在全球範圍內設置。 – 2010-02-09 12:30:24

相關問題