2014-10-15 3 views
1

Что было бы лучшим способом всегда гарантировать, что файл, сохраненный на диске (или iCloud), содержит расширение по умолчанию для нашего формата документа в приложении с какао NSDocument?Всегда добавляемые расширения файлов в NSDocument

фон:
Пользователи могут загружать устаревшие файлы в приложение, которое по-прежнему использовать Type-творец-коду.

С автоматическим сохранением, включенным в нашем приложении, мы должны убедиться, что в файле всегда добавлено расширение файла, как только оно будет записано на диск (после любых изменений) с нашим приложением Cocoa - или приложение выиграло Невозможно открыть его (теперь ни код-тип-создатель , ни расширение файла).

ответ

2

Если бы я получил это право я перезаписать NSDocumentController's открытый метод

- (void)openDocumentWithContentsOfURL:(NSURL *)url 
           display:(BOOL)displayDocument 
        completionHandler:(void (^)(NSDocument *document, 
               BOOL documentWasAlreadyOpen, 
               NSError *error))completionHandler { 
    if(!url.pathExtension isEqualToString:@"XYZ") 
     url = url URLByAppendingPathExtension:@"XYZ"]; 
    [super openDocumentWithContentsOfURL:url 
           display:displayDocument 
         completionHandler:completionHandler]; 
} 

Примечание: написано рядный

+0

Хм, интересно - мы не можем добраться до URL аналогичным образом из 'NSDocument' ? Подобно переопределению 'readFromURL: ofType: error:' вместо (* в настоящее время используется 'readFromData: ofType: error:' *)? Нужно ли перейти прямо к «NSDocumentController»? – cacau

+0

Да, документ будет знать свой URL-адрес, но контроллер все равно свяжет его со старым URL-адресом. вы действительно должны перезаписать контроллер –

+0

Ах! Хорошая точка - приветствия! Я попробую это позже .. – cacau