Вы почти у цели, вам просто нужно добавить немного больше в Info.plist вашего приложения.
- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
{
NSData *data;
[self setString:[textView textStorage]];
NSMutableDictionary *dict =
[NSDictionary dictionaryWithObject:NSRTFTextDocumentType
forKey:NSDocumentTypeDocumentAttribute];
Обратите внимание, что в методе, который запрашивает сохранение данных в файл, несмотря ни на что, он настроен на использование NSRTFTextDocumentType, а не NSRTF * D * TextDocumentType. RTFD означает RTF с вложениями, который сохраняет документ .rtfd, который на самом деле является пакетом / пакетом (папка, которая представляется пользователю, как если бы это был один файл). Сохранение как NSRTFTextDocumentType эффективно отбрасывает вещи, которые не помещаются в документ RTF, например изображения.
После шага 12 происходит следующее:
На данном этапе развития ваш редактор открывает и сохраняет документы только с расширением ????. Чтобы ваше приложение могло сохранять и открывать документы с распознанным типом файлов, вам необходимо использовать Xcode для настройки параметров типов документов в файле списка свойств приложения в папке «Ресурсы» в Xcode. (Шаблон Xcode называет файл именем вашего проекта, за которым следует -Info.plist.) Вы можете редактировать этот файл в Xcode, выбрав файл в списке "Группы и файлы" и используя встроенный редактор. Щелкните треугольники раскрытия, чтобы изменить значение первого элемента в CFBundleTypeExtensions на предпочтительное расширение для файлов документов.
Для получения дополнительной информации о файлах списка свойств см. « Сохранение информации о типах документов в списке свойств приложения » в обзоре приложений на основе документов. Для получения полной информации о списках свойств приложений см. Рекомендации по настройке среды выполнения.
По сути, прямо сейчас вам передается общий DocumentType в этом методе данных, показанном выше. После того, как вы заявите в своем Info.plist, что вы можете обрабатывать данные RTF и RTFD (как две отдельные записи), вам будет передано другое значение в этом методе, в зависимости от того, что пользователь выбрал во всплывающей кнопке Format в NSSavePanel. . Вы можете проверить значение переданного типа, а затем указать NSRTFTextDocumentType или NSRTFDTextDocumentType соответственно.
Вы, вероятно, можете посмотреть на TextEdit Info.plist, чтобы использовать его в качестве основы для ваших типов документов, хотя не забудьте изменить имя подкласса NSDocument на свое собственное, чтобы NSDocumentController знал, какой класс использовать.
person
NSGod
schedule
14.12.2010