1
我正在製作一個Cocoa應用程序,它使用文檔包(bundle)作爲數據。 我指定了一個擴展名,Finder現在可以很好地識別擴展名爲文件的文件夾。 但文件夾的擴展名仍然顯示,我想默認隱藏它(如應用程序包)是否有一個選項可以做到這一點?如何使Cocoa文件包的類型默認隱藏它的擴展名?
我正在製作一個Cocoa應用程序,它使用文檔包(bundle)作爲數據。 我指定了一個擴展名,Finder現在可以很好地識別擴展名爲文件的文件夾。 但文件夾的擴展名仍然顯示,我想默認隱藏它(如應用程序包)是否有一個選項可以做到這一點?如何使Cocoa文件包的類型默認隱藏它的擴展名?
您可以使用-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;
}
謝謝!這是每個文件方法還是每種類型(或擴展)方法?這是不可能的設置我的文件類型的默認行爲? – Eonil 2010-02-09 08:29:33
這是每個文件,它在文件上設置擴展屬性。我認爲沒有辦法在全球範圍內設置。 – 2010-02-09 12:30:24