Сначала немного истории:
Более старые версии среды выполнения Objective C (до OS X) включали псевдо-класс с именем NXTypedStream , который является предком NSCoder до OPENSTEP. Более ранние версии Foundation содержали заголовок NSCompatibility.h , в котором были функции и категории для работы со старыми форматами NeXTStep. NSCompatibility.h больше не существует, но (не рекомендуется) подмножество этой функциональности все еще можно найти в NSCoder.h.
NSCoder дебютировал как часть оригинального Foundation Kit в OPENSTEP, но, вероятно, использовал типизированные потоки в качестве формата сериализации. В какой-то момент он был переведен в формат на основе plist. Текущая версия Интерфейсного Разработчика (как часть XCode) все еще в состоянии читать более старые, основанные на typedstream NIBs, который является хорошим признаком, что эта функциональность все еще существует в OS X.
Теперь решение:
Я не могу найти это ни в одной (текущей) документации Apple, но оказывается, что NSCoder / NSUnarchiver все еще может читать файлы типизированного потока просто отлично. Если вы хотите прочитать файл typedstream в программе Cocoa / Objective-C, просто сделайте это:
NSUnarchiver *typedStreamUnarchiver = [[NSUnarchiver alloc] initForReadingWithData:[NSData dataWithContentsOfFile:@"<path to your typedstream file>"]];
Вот и все! Декодирование выполняется внутри функции _decodeObject_old. Теперь вы можете разархивировать, используя стандартные NSCoder методы, такие как:
id object = [typedStreamUnarchiver decodeObject];
NSLog(@"Decoded object: %@", object);
Обратите внимание, что если класс в typedstream не является допустимым классом в вашей программе, он выдаст исключение NSArchiverArchiveInconsistency.
Смотри также: http://www.stone.com/The_Cocoa_Files/Legacy_File_Formats.html