2010-04-03 3 views
0

Я пытаюсь взять NSImage и преобразовать его в строку, которую я могу записать в XML-документе.Проблема кодирования текста между NSImage, NSData и NSXMLDocument

Моя текущая попытка выглядит примерно так:

[xmlDocument setCharacterEncoding: @"US-ASCII"]; 

NSData* data = [image TIFFRepresentation]; 
NSString* string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 

//Put string inside of NSXMLElement, write out NSXMLDocument. 

Чтение обратно выглядит примерно так:

NSXMLDocument* newXMLDocument = [[NSXMLDocument alloc] initWithData:data options:0 error:outError]; 
//Here's where it fails. I get: 
//Error Domain=NSXMLParserErrorDomain Code=9 UserInfo=0x100195310 "Line 7: Char 0x0 out of allowed range" 

я предполагаю, что я что-то основное отсутствует. Что случилось с этой проблемой кодирования?

ответ

2

Прежде всего, внедрение большого количества двоичных данных в XML не является хорошей идеей, ИМХО.

Чтобы ответить на ваш вопрос, вам нужна схема кодирования, которая поддерживает двоичные данные, такие как Base64.

Смотрите эту страницу для более чем одного способа представления произвольной NSData как Base64-закодированной строки: http://www.cocoadev.com/index.pl?BaseSixtyFour

UPDATE: Ссылка на NSData дополнений коллоквиума, кажется, быть разорван на этой странице. Вот новый URL: http://colloquy.info/project/browser/trunk/Additions/NSDataAdditions.m

+0

Отличное решение! От полностью проблемного до полностью функционального за 11 минут. :) Кроме того, да, это временная вещь; Я знаю, что это уродливо. – andyvn22

 Смежные вопросы

  • Нет связанных вопросов^_^