Сохранение состояния данных приложения при выходе - PullRequest
4 голосов
/ 03 февраля 2010

У меня есть NSMutableArray с 24 строками.

Мне нужно сохранить эти данные, если пользователь получает звонок или выходит из приложения.

Я изучил много примеров, но по какой-то причине не могу определить, как лучше всего сохранить данные.

24 строки соответствуют 24 кнопкам и их состоянию. При нажатии кнопки отображается соответствующая информация о массиве для этого тега кнопок (0 - 23). Что мне нужно было бы сохранить, если нажать 10 кнопок и показать их данные, как / как лучше всего сохранить эти данные, чтобы их можно было перезагрузить при запуске приложения?

Я думаю, мне нужно хранить:

Button Tag, Кнопки, соответствующие значению Array,
Состояние кнопки (нажата ли она и отображается ли значение или нет)

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

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

Любая помощь или мысли по этому поводу очень ценятся.

Geo ...

Ответы [ 3 ]

5 голосов
/ 03 февраля 2010

вы должны иметь возможность хранить его в NSUserDefaults

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:buttonState forKey:@"buttonState"];
[defaults synchronize];

// Then to get the state back
NSMutableArray* buttonState = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"buttonState"] mutableCopy];
2 голосов
/ 03 февраля 2010

Вы можете сохранить данные в списке в каталоге документов. Если данные есть, загрузите их, а если нет, то это будет означать, что все будет в порядке

Для загрузки данных:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documents = [paths objectAtIndex:0];
NSString *filePath = [documents stringByAppendingPathComponent:@"buttonState.plist"];
NSMutableDictionary *buttonState = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath]; 

Для сохранения данных:

[buttonState writeToFile:filePath atomically: YES]; 
1 голос
/ 03 февраля 2010

Я сохраняю свои данные, используя NSKeyedArchiver / NSKeyedUnarchiver, поскольку ваш NSMutableArray уже поддерживает протокол NSCoding, вы можете просто использовать

yourArray = [NSKeyedUnarchiver unarchiveObjectWithFile:file];

[NSKeyedArchiver archiveRootObject:yourArray toFile:file];

Edit:

Полагаю, что NSArray собственные методы работают также

[NSArray writeToFile:]
[NSArray initWithContentsOfFile:]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...