Обновление: Это работает, если я называю archiveRootObject: от applicationDidFinishLaunching:. Если я называю его от init: метод singleton-класса, это возвращает ноль.
Я очень смущен поведением NSKeyedUnarchiver unarchiveObjectWithFile:. В документации говорится, что она возвратит ноль, если файл не будет существовать. С одним из моих объектов происходит следующее:
Game *g1 = [Game getGame];
NSString *archivePath = [Game getArchivePath];
bool success = [NSKeyedArchiver archiveRootObject:g1 toFile:archivePath];
Game *g2 = [NSKeyedUnarchiver unarchiveObjectWithFile:archivePath];
// success is true, g2 is nil
Я проверил, что файл на самом деле существует и становится записанным в archiveRootObject: метод. Что я делаю неправильно препятствование тому, чтобы я вытащил Игровой объект назад из архива?