Я пытался сохранить состояние своего приложения для iPhone, сериализуя свой основной UITabBarController с помощью [NSKeyedArchiver archiveRootObject:toFile:], но у меня возникают трудности.
Сначала у меня была проблема с UIImage, поскольку он не реализует протокол NSCoding, но я решил это, создав категорию расширения для UIImage, которая хранит и извлекает необработанные данные изображения.
Проблема, с которой я сейчас застрял, заключается в том, что моих контроллеров представления нет, когда я восстанавливаю из архива. У меня UINavigationControllers на каждой из моих вкладок, и когда я восстанавливаю, UINavigationItem все еще там (я могу использовать кнопки «Назад» и так далее, чтобы их изменить), но контроллеры представления просто исчезли.
Я вижу, что свойство UINavigationController viewControllers отмечено (nonatomic, copy). Означает ли это, что когда вы архивируете UINavigationController, он не включает свой стек контроллеров представления? Если да, то как я могу это обойти? Сначала я подумал, что переопределю NSCoding методы для UINavigationController, но это мешает инициализации из файла NIB.
Я немного обеспокоен тем, что у меня возникли большие проблемы с сохранением состояния приложения. Я подумал, что это достаточно распространенный вариант использования, который будет несложно реализовать. Я что-то упустил?