Я знаю, что здесь есть много ресурсов, но пока не могу найти, что не так с моим кодом:
У меня есть класс Level и два подкласса Level: GameLevel и TransitionLevel. Каждый из этого класса реализует протокол NSCoding.
Затем у меня есть массив уровня (так что он содержит оба класса GameLevel и TransitionLevel). Сохранение архива работает нормально:
NSString *archivePath = [DOCUMENT_DIRECTORY stringByAppendingPathComponent:@"levels.archive"];
[NSKeyedArchiver archiveRootObject:levels toFile:archivePath];
Обратите внимание, что уровни - это массив, который я хочу сохранить. Я вижу файл, он создан и, кажется, содержит то, что должен содержать.
Но когда я хочу получить этот массив:
NSString *archivePath = [DOCUMENT_DIRECTORY stringByAppendingPathComponent:@"levels.archive"];
levels = [NSKeyedUnarchiver unarchiveObjectWithFile:archivePath];
У меня есть исключение:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
Я не уверен, что мне здесь не хватает.