2010-02-03 5 views
1

Я делаю приложение Cocoa, которое использует пакет документов (пакет) как его данные. Я указал расширение, и Finder теперь распознает папку с расширением как документ хорошо. Но расширение папки все еще отображается, и я хочу скрыть его по умолчанию (например, пакет приложений). Есть ли возможность сделать это?Как сделать тип пакета документа Cocoa с его расширением скрытым по умолчанию?

ответ

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

Спасибо! Подходит ли этот подход для каждого файла или для каждого типа (или расширения)? Неужели невозможно установить поведение по умолчанию для моего типа файла? – Eonil

+0

Это файл, он устанавливает расширенный атрибут в файле. Я не думаю, что есть способ установить это глобально. –