У меня есть объект 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?
данные и 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'
спасибо.