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