1. Объявите типы файлов как типы документов
В вашем проекте XCode добавьте Тип документа для всех форматов файлов, поддерживаемых вашим приложением. Установите Роль каждого типа в соответствии со способностями вашего приложения:
- Пометить типы файлов с возможностью чтения / записи как Editor ;
- Пометить импорт файлов только как Просмотр .
Установите Class на тип документа, который вы хотите обрабатывать для каждого типа файла. Один класс документов может обрабатывать несколько типов файлов.
В приведенном ниже примере объявлены три типа файлов: font-pestle, otf и ttf. Первый, font-pestle, является родным форматом приложения. Этот тип имеет роль Editor .
Оставшиеся два формата, otf и ttf, могут быть импортированы, но не записаны приложением; таким образом они помечены как Просмотрщик .
![Example Document Types](https://i.stack.imgur.com/yVmHs.png)
2. Дополнительные типы файлов в вашем подклассе NSDocument
При добавлении типов документов приложение автоматически разрешает пользователям открывать файлы указанных типов.
Вам необходимо добавить код обработки типов файлов в ваш класс документов. В идеальном случае добавьте код ветвления к методу readFromData:ofType:error:
:
- (BOOL)readFromData:(NSData*)someData ofType:(NSString*)typeName error:(NSError**)outError
{
if ([NSWorkspace.sharedWorkspace type:@"eu.miln.font-pestle" conformsToType:typeName] == YES)
{
// read native format
}
else if ([NSWorkspace.sharedWorkspace type:@"public.opentype-font" conformsToType:typeName] == YES)
{
// read import only format
// disassociate document from file; makes document "untitled"
self.fileURL = nil;
// associate with primary file type
self.fileType = @"eu.miln.font-pestle";
}
else // ...
}
Значение self.fileURL = nil;
важно. Установив для fileURL значение nil, вы говорите, что документ не связан ни с одним файлом на диске и должен рассматриваться как новый документ.
Чтобы разрешить автоматическое сохранение, реализуйте метод NSDocument autosavingFileType
для возврата основного типа файла.