Я упаковал объект (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];
Любая помощь в решении этого вопроса, я буду признателен
canvasView.trazoYorch
? - person rmaddy   schedule 16.05.2013NSString
для хранения в базе данных? Почему бы не сохранить его как блоб? То, как вы конвертируетеdata
в строку, совершенно неуместно. ИспользованиеstringWithFormat
не должно использоваться для этой цели. - person rmaddy   schedule 16.05.2013stringWithFormat:
. ЕДИНСТВЕННЫЙ раз, когда это допустимо, - распечатать объектNSData
в целях отладки. Гораздо лучший подход — преобразовать объектNSData
в строку с помощью кодировщика base64. Другой вопрос и ответ, на который вы ссылаетесь, неверны. Проблема в том, чтоNSData
преобразуется в строку вызовом методаdescription
. Выход недокументирован. Результаты могут измениться. Это только для отладки. - person rmaddy   schedule 16.05.2013