Как мне сохранить программные переменные в приложении iPhone, которое переживет выход из программы? - PullRequest
2 голосов
/ 08 января 2009

Мне нужно сохранить значения программных переменных в приложении iPhone при выходе из приложения. Предоставляет ли SDK программисту какую-либо постоянную память для использования? Сколько доступно? Будет ли оно сохраняться через цикл питания? Через спящий режим? Через хард ресет?

Ответы [ 5 ]

4 голосов
/ 08 января 2009

Существует много вариантов хранения данных из вашего приложения для последующего использования. Из них, как указано, используют NSUserDefaults и SQLite. Другой способ - создать файл в папке «Documents» вашего приложения и сохранить свои данные здесь. Прочитайте содержимое файла при следующем запуске приложения. Это объясняется в руководстве Files & Networking от Apple

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

4 голосов
/ 08 января 2009

Вы хотите использовать класс NSUserDefaults для хранения пользовательских настроек. Это супер просто. Они будут сохраняться при перезагрузках устройства, циклах питания и т. Д.

Вот краткое руководство , с которого можно начать.

3 голосов
/ 08 января 2009

Вы можете написать в локальное хранилище вашего приложения или использовать базу данных sqlite. Оба варианта описаны здесь, http://developer.apple.com/iphone/library/codinghowtos/DataManagement/index.html#FILE_MANAGEMENT-WRITE_INFORMATION_LOCALLY

2 голосов
/ 01 августа 2009
-(void)saveToUserDefaults:(NSString*)myString
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    if (standardUserDefaults) {
        [standardUserDefaults setObject:myString forKey:@"Prefs"];
        [standardUserDefaults synchronize];
    }
}

-(NSString*)retrieveFromUserDefaults
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    NSString *val = nil;

    if (standardUserDefaults) 
        val = [standardUserDefaults objectForKey:@"Prefs"];

    return val;
}
0 голосов
/ 08 января 2009

Лучший вариант - сохранить их в экземпляре БД SQLite вашего приложения. Это как можно ближе к энергонезависимой памяти.

...