Как сохранить состояние приложения с помощью NSUserDefaults в iPhone?

Вот что я делаю:

- (void) applicationWillTerminate: (UIApplication*) application {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:navigationController.viewControllers
        forKey:@"diabetesstate"];
}

- (void) applicationDidFinishLaunching: (UIApplication*) application {
    NSMutableArray *state = [[NSUserDefaults standardUserDefaults] 
        objectForKey:@"diabetesstate"];
    if (state == nil) {
        //Will initialize a new controller and put it as root view controller
    }
    else {
        [navigationController setViewControllers:state animated:NO];
    }
}

person keith    schedule 08.06.2010    source источник
comment
Это работает? Если нет, то почему? Что вы ожидаете от кода, что он делает на самом деле?   -  person zoul    schedule 08.06.2010


Ответы (1)


Похоже, вы пытаетесь добавить UIViewController в userdefaults? Сомневаюсь, что это сработает.

Я предполагаю, что вам нужно будет поместить туда некоторую строку идентификатора или номер, который сообщает вам, какой контроллер просмотра в настоящее время отображается, и когда приложение запускается, в основном проверяйте это значение и соответствующим образом настраивайте свои контроллеры просмотра.

Мне нужно реализовать что-то подобное для моего приложения. У меня есть список объектов, и когда пользователь нажимает на один из них, я показываю дочерний объект. Моя идея состоит в том, чтобы сохранить идентификатор клиентского объекта, если он в настоящее время отображается, иначе NULL. Когда приложение запустится, я проверю значение. Если он NULL, я покажу список родительских объектов, в противном случае я покажу дочерний объект с идентификатором, который находится в userdefaults.

person Thomas Müller    schedule 08.06.2010