Обычно 'теряемый' эвфемизм для, "Мы прекратили платить разработчику и теперь ему, привычка дает нам исходный код".
Однако я владею копией Средство просмотра ActionScript Burak , и оно работает вполне прилично. Простой поиск Google найдет Вас многими другими декомпиляторами SWF.
Используйте -decodeObjectForKey:
и прочтите документацию .
Вот методы протокола NSCoding из моего объекта LogEntry, вы можете игнорировать оператор switch и детали схемы, они взяты из написанного мною базового класса, что позволяет мне в здравом уме отслеживать изменение форматов данных.
Обратите внимание, что помимо использования decodeObjectForKey: вам также необходимо убедиться, что вы сохраняете / копируете данные значения, поскольку они автоматически освобождаются при получении.
- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self != nil) {
switch ([schemaVersion intValue]) {
case 2:
filepath = [[coder decodeObjectForKey:@"filepath"] copy];
identifier = [coder decodeInt64ForKey:@"identifier"];
level = [coder decodeIntForKey:@"level"];
lineNumber = [[coder decodeObjectForKey:@"lineNumber"] retain];
message = [[coder decodeObjectForKey:@"message"] retain];
timestamp = [[coder decodeObjectForKey:@"timestamp"] retain];
break;
default:
[self release], self = nil;
break;
}
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder {
[coder encodeObject:filepath forKey:@"filepath"];
[coder encodeInt64:identifier forKey:@"identifier"];
[coder encodeInt:level forKey:@"level"];
[coder encodeObject:lineNumber forKey:@"lineNumber"];
[coder encodeObject:message forKey:@"message"];
[coder encodeObject:timestamp forKey:@"timestamp"];
[super encodeWithCoder:coder];
}
I думаю, вам следует использовать -decodeObjectForKey: