Как передать NSData как NSString и получить его обратно?

у меня есть объект NSData.

Я хочу преобразовать его в строку, передать функции, а затем снова преобразовать в объект NSData.

Но как?

Я попробовал этот метод, но значение NSData отличается от исходного!

вот мой код:

  // a generic class
  APClass *c = [[APClass alloc] init];
  c.aNumber = 123;
  c.aString = @"my string";

  // my data obj
  NSMutableData *data = [NSMutableData data];

  // archiver to store class in nsdata
  NSKeyedArchiver *encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
  [encoder encodeObject:[NSNumber numberWithInt:c.aNumber] forKey:@"aNum"];
  [encoder encodeObject:c.aString forKey:@"aStr"];
  [encoder finishEncoding];
  [encoder release];

  [c release];

  NSLog(@"%@", data);
  NSString *d = [NSString stringWithFormat:@"%@", data];

  // ---

  NSString *strFromData = [NSString stringWithFormat:@"%@", d];

  NSData *dataNM = [strFromData dataUsingEncoding:NSUTF8StringEncoding];

  // decoder to retrieve class from nsdata      
  NSKeyedUnarchiver *decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:dataNM];
  int number       = [[decoder decodeObjectForKey:@"aNum"] intValue];
  NSString *string = [decoder decodeObjectForKey:@"aStr"];
  [decoder finishDecoding];
  [decoder release];

  NSLog(@"[Number: %d] -- [String: %@]", number, string);

Как я могу преобразовать обратно в исходный NSData?

data и dataNM отличаются по размеру. Компилятор возвращает эту ошибку:

2012-04-02 16:33:28.269 DataTest[18008:f803] -[__NSCFData objectForKey:]: нераспознанный селектор отправлен экземпляру 0x6b46c80

2012-04-02 16:33:28.270 DataTest[18008:f803] *Завершение работы приложения к необработанному исключению «NSInvalidArgumentException», причина: '-[__NSCFData objectForKey:]: экземпляру отправлен нераспознанный селектор 0x6b46c80'

спасибо.

6
задан elp 3 April 2012 в 07:20
поделиться