NSString, закодированный с помощью NSASCIIStringEncoding в NSData

Я упаковал объект (NSObject) в (NSData), а затем закодировал его с помощью (NSASCIIStringEncoding) для отправки в базу данных SQLite с помощью этого кода:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:canvasView.trazoYorch];

//convert NSData object to plain text for sending it to DB
NSData *data2 = [[NSString stringWithFormat:@"%@",data] dataUsingEncoding:NSASCIIStringEncoding];
NSString *dataStr = [[NSString alloc] initWithData:data2 encoding:NSASCIIStringEncoding];

все работает нормально, но когда я хочу выполнить обратный процесс NSString для NSData, я получил разные результаты, это мой код для обратного процесса

NSString *FirmaString = [self traerFirmadeBD]; //returns the string content of DB       
NSData   *data2       = [FirmaString dataUsingEncoding:NSASCIIStringEncoding];
FirmaYorch *firmaCompleta = [NSKeyedUnarchiver unarchiveObjectWithData:data2];

Любая помощь в решении этого вопроса, я буду признателен


person Jesús Ayala    schedule 16.05.2013    source источник
comment
Какие данные находятся в canvasView.trazoYorch?   -  person rmaddy    schedule 16.05.2013
comment
является NSObject, в нем также реализовано ‹NSCoding› для возможности использования NSKeyedArchiver   -  person Jesús Ayala    schedule 16.05.2013
comment
Почему вы хотите преобразовать заархивированный объект в NSString для хранения в базе данных? Почему бы не сохранить его как блоб? То, как вы конвертируете data в строку, совершенно неуместно. Использование stringWithFormat не должно использоваться для этой цели.   -  person rmaddy    schedule 16.05.2013
comment
Я использовал этот метод stackoverflow.com/questions/4767420/ с успехом, но он объясняет, как это сделать только одним способом, если вы можете поделиться полной реализацией для хранения моего объекта canvasView.trazoYorch в виде большого двоичного объекта ( инверсия и реверс) буду признателен приятель   -  person Jesús Ayala    schedule 16.05.2013
comment
Я думаю сделать временное решение с использованием SQLite DB для демонстрации, реальное будет использовать WebServices, поэтому я думал отправить его как строку, все еще думая о правильном решении, за вашу ориентацию и комментарии, спасибо заранее, ребята   -  person Jesús Ayala    schedule 16.05.2013
comment
Неправильно преобразовывать объект NSData в строку, используя stringWithFormat:. ЕДИНСТВЕННЫЙ раз, когда это допустимо, - распечатать объект NSData в целях отладки. Гораздо лучший подход — преобразовать объект NSData в строку с помощью кодировщика base64. Другой вопрос и ответ, на который вы ссылаетесь, неверны. Проблема в том, что NSData преобразуется в строку вызовом метода description. Выход недокументирован. Результаты могут измениться. Это только для отладки.   -  person rmaddy    schedule 16.05.2013