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