Я столкнулся со странным поведением в NSKeyedUnarchiver.
Я архивирую данные, для этого примера я просто использую строку:
NSMutableData *myData = [ NSMutableData data ];
NSKeyedArchiver *archiver = [[ NSKeyedArchiver alloc ] initForWritingWithMutableData:myData ];
NSString *testString = [ NSString stringWithString:@"Hello World!" ];
[ archiver encodeObject:testString forKey:@"test" ];
[ archiver finishEncoding ];
и затем я хочу разархивировать ее.если я использую
NSKeyedUnarchiver *unarchiver = [ NSKeyedUnarchiver unarchiveObjectWithData:myData ];
NSString *result = [ unarchiver decodeObjectForKey:@"test" ];
, я получаю нулевой результат, но если я использую:
NSKeyedUnarchiver *unarchiver = [[ NSKeyedUnarchiver alloc ] initForReadingWithData:myData ];
NSString *result = [ unarchiver decodeObjectForKey:@"test" ];
, я получаю обратно свою строку.Теперь я подумал, что [NSKeyedUnarchiver unarchiveObjectWithData: myData] является просто вспомогательным методом для [[NSKeyedUnarchiver alloc] initForReadingWithData: myData], но, похоже, он не работает таким образом.Я не прав.
Спасибо, Реза