Сохранение графического изображения в текстовом редакторе?

Я делаю основной текстовый редактор из этого руководства здесь: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TextArchitecture/Tasks/TextEditor.html

Мой текстовый редактор может сохранять, писать и открывать документы в формате RTF и TXT, но не может сохранять графику вместе с любым текстом. Форматированный текст сохраняется, а графика отображается, когда окно открыто, но не сохраняется.


person AlienWorlds Productions    schedule 13.12.2010    source источник
comment
Покажите нам, что вы на самом деле делаете, чтобы сохранить документ в настоящее время   -  person Mike Abdullah    schedule 14.12.2010


Ответы (2)


Вы почти у цели, вам просто нужно добавить немного больше в 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

может ваши изображения не сохранены в той же директории? например, если я создаю документ в формате RTF с помощью TextEdit, он создает папку с именем something.rtfd и содержит TXT.rtf и все изображения.

person Community    schedule 13.12.2010