2013-08-26 2 views
2

Мне нужно сохранить состояние приложения во время завершения приложения, чтобы при повторном запуске приложения приложение запускалось из состояния, в котором оно было закрыто в последний раз. Это своего рода восстановление приложения, но методы восстановления, вызванные неожиданным закрытием приложения. Но мне нужно восстанавливать приложение каждый раз, когда он неожиданно закрывает пользователя, закрывая его вручную. Мне просто нужно сохранить пользовательский интерфейс приложения, а не данные приложения. Любая идея была бы полезной для меня. БлагодаряКак сохранить состояние приложения в какао

ответ

2
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender 
{ 
    //saveData 
    return NSTerminateNow; 
} 

Если вы хотите сохранить позицию NSWindow, вы можете использовать [window saveFrameUsingName:@"myWindow"];
и использовать
[window setFrameAutosaveName:@"myWindow"]; @ запуска приложения.

+0

Я знаю этот метод, он называется на время завершения приложения. Моя проблема заключается в том, как сохранить состояние приложения (позиция управления пользовательским интерфейсом). – Surjeet

+0

Позиция позиции пользовательского интерфейса в NSUserDefaults –

+0

Вы можете использовать saveFrameUsingName: для сохранения позиции NSWindow setFrameAutosaveName: –

1

Вы можете сохраняться состояние в любой из доступных методов, таких как:

я. NSUserDefaults

Пример:

//saving 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setBool:YES forKey:@"testBool"]; 
//retrieving 
[defaults boolForKey:@"testBool"]; 

II. Сериализация объекта состояния.

III. Сохранение в виде файла Plist

Пример:

NSMutableDictionary *stateDictionary = [NSMutableDictionary dictionary]; 
//set state 
... 

//saving 
[stateDictionary writeToFile:<filePath> atomically:YES]; 

//retrieve 
stateDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:<filePath>] 

внутривенно. Использование SQLite или Core-Data

(Скорее всего, не требуется, если состояние вашего приложения не находится в какой-то объект реляционной модели)

UPDATE:
Для сохранения состояния пользовательского интерфейса окна , Проверьте это link и под заголовком СОХРАНЕНИЕ ПОЛЬЗОВАТЕЛЯ ИНТЕРФЕЙСА.

+0

Можете ли вы объяснить, как использовать их для хранения фрейма элементов управления, который добавляется в NSWindow. и, пожалуйста, не говорите, чтобы хранить фрейм каждого элемента управления, потому что у меня много элементов управления на окне и хранение каждого кадра управления - очень большая задача. – Surjeet

+0

К сожалению, NSWindow не является непосредственно сериализуемым или записываемым в файл. У вас может быть либо подкласс NSWindow, чтобы переопределить методы кодирования (см. Ссылку для элемента списка ii), либо вы можете проверить ссылку, которую я предоставил в обновленном ответе. – Rakesh

Смежные вопросы