2014-06-05 9 views
0

У меня возникли проблемы с преобразованием двоичных данных (некоторого текста) обратно в строку.Двоичные данные для преобразования строки в строку

Исходный текст получен из фида JSON и затем преобразуется в двоичные данные для хранения (с правильным форматированием) в CoreData. Моя проблема заключается в том, чтобы вернуть его из CoreData. Когда я пытаюсь преобразовать его в следующем: NSString *howToString = [[NSString alloc]initWithBytes:[dish.dishMainText bytes] length:[dish.dishMainText length] encoding:NSASCIIStringEncoding]; я получаю следующее:

bplist00‘T$topX$objectsX$versionY$archiver—TrootÄ¢ 
U$nulloÚ1 kage 



R¯r sukker, kakao og vanillekorn i sm¯rret. Pisk Êggene i et ad gangen, og tilsÊt til sidst melet. Fordel dejen i en smurt form p 24 cm. Bag kagen i ca. 20 minutter nederst i ovnen ved 175∞. 



Giv piskefl¯de og sm¯r et lille opkog. TilsÊt appelsinskal og chokolade, og lad den smelte ved lav temperatur. R¯r rundt i blandingen. HÊld chokoladeblandingen i en skÂl og sÊt den koldt. Fordel den faste tr¯ffelmasse ud over den afk¯lede kage. 



Server evt. kagen pyntet med blandede bÊr.܆_NSKeyedArchiver(25:<?E-2 
D 

Как вы можете видеть, в начале и в конце концов есть некоторый текст, который не правильно преобразован. Я пробовал разные формы кодирования (UTF, Latin1/2 и т. Д.), Но ничего не работает отлично. Это лучший результат, который я смог выработать до сих пор, но это явно неудовлетворительно.

Сообщите мне, если требуется больше кода.

Заранее спасибо Крис

+0

Как он преобразуется в двоичные данные? – Daniel

+0

Я использую RKEntityMapping (часть RestKit), а затем просто назначаю строку JSON атрибуту Binary Data моего объекта – Chris

+0

Как указано в @GregParker. Это пример того, как читать его в документе Apple: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/PropertyLists/ReadWritePlistData/ReadWritePlistData.html#//apple_ref/doc/uid/10000048i -CH8-SW1 – 3329

ответ

0

Это bplist00 текст в начале данные свидетельствуют о том, что ваши данные на самом деле бинарная PLIST, а не просто закодированные строки. Попробуйте использовать NSPropertyListSerialization для декодирования ваших данных.

+1

Спасибо за ваш ответ Крейг, я боюсь, что это тоже не дало мне желаемого результата. Он возвращает еще больше «исходных данных», – Chris

0

Это ключ-архив, который является своего рода подспешником списка свойств. Это сериализованный граф объектов из вашего приложения. Вы можете разархивировать его следующим образом:

id rootObject = [NSKeyedUnarchiver unarchiveObjectWithData:[dish.dishMainText bytes]]; 

Обратите внимание, что результат - при условии, что данные были заархивированы из вашего приложения, и это действительный архив - это объектный граф, а не строка.

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