Мне нужно сохранить состояние приложения во время завершения приложения, чтобы, когда пользователь повторно запускал приложение, приложение запускалось из состояния, в котором оно было закрыто в последний раз. Это своего рода восстановление приложения, но методы восстановления вызываются, когда приложение неожиданно закрывается. Но мне нужно восстанавливать приложение каждый раз, когда оно неожиданно закрывается пользователем, закрывающим его вручную. Мне просто нужно хранить пользовательский интерфейс приложения, а не данные приложения. Любая идея будет полезна для меня. Спасибо
Как сохранить состояние приложения в какао
Ответы (2)
Вы можете сохранить состояние любым из доступных методов, например:
<сильный>я. NSUserDefaults
Пример:
//saving
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:YES forKey:@"testBool"];
//retrieving
[defaults boolForKey:@"testBool"];
II. Сериализация объекта состояния.
- Сохранение данных iPhone в iOS 4 с использованием архивации
- Правильный способ сохранения/сериализации пользовательских объектов в iOS
III. Сохранение в виде файла plist
Пример:
NSMutableDictionary *stateDictionary = [NSMutableDictionary dictionary];
//set state
...
//saving
[stateDictionary writeToFile:<filePath> atomically:YES];
//retrieve
stateDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:<filePath>]
IV. Использование sqlite или Core-Data
(Скорее всего, это не нужно, если только состояние вашего приложения не находится в какой-то объектно-реляционной модели)
ОБНОВЛЕНИЕ.
Чтобы сохранить состояние пользовательского интерфейса окон, ознакомьтесь с этим ссылка и под заголовком СОХРАНЕНИЕ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА.
person
Rakesh
schedule
26.08.2013
Можете ли вы объяснить, как использовать их для хранения фрейма элементов управления, который добавляется в NSWindow. и, пожалуйста, не говорите хранить кадр каждого элемента управления, потому что у меня есть много элементов управления в окне, и сохранение каждого кадра управления - очень большая задача.
- person Surjeet; 26.08.2013
К сожалению, NSWindow нельзя напрямую сериализовать или записать в файл. У вас может быть либо подкласс NSWindow, чтобы переопределить методы кодирования (см. ссылку для элемента списка ii), либо вы можете проверить ссылку, которую я предоставил в обновленном ответе.
- person Rakesh; 27.08.2013
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
//saveData
return NSTerminateNow;
}
Если вы хотите сохранить позицию NSWindow, вы можете использовать [window saveFrameUsingName:@"myWindow"];
и использовать[window setFrameAutosaveName:@"myWindow"];
при запуске приложения.
person
Parag Bafna
schedule
26.08.2013
я знаю этот метод, он вызывается во время закрытия приложения. Моя проблема в том, как сохранить состояние приложения (положение элемента управления пользовательского интерфейса).
- person Surjeet; 26.08.2013
сохранить позицию элемента управления пользовательского интерфейса в NSUserDefaults
- person Parag Bafna; 26.08.2013
Вы можете использовать saveFrameUsingName: для сохранения позиции NSWindow setFrameAutosaveName:
- person Parag Bafna; 26.08.2013