Как навсегда сохранить данные в листе - PullRequest
0 голосов
/ 13 октября 2011

Мне нужно сохранить несколько простых настроек приложения и выбрать использование plist.

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

Это код, реализованный для кнопки «Сохранить конфигурацию» (конечно, есть «config.plist»).файл с ключом «initialURL»)

- (IBAction) saveButtonTapped
{
    NSString *plistfile = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
    NSMutableDictionary *dict =[NSMutableDictionary dictionaryWithContentsOfFile:plistfile];
    [dict setValue:initialURL.text forKey:@"initialURL"];
    [dict writeToFile:plistfile atomically:YES];
}

После writeToFile: plistfile значение, записанное в UITextField с именем initialURL, записывается в правильный ключ, и если перезагрузить тот же ключ, я получаю обновленное значение, но если я выйду из приложения и перезапущу его, значение initialURL будет потеряно.

Почему это происходит?Есть ли что-то неправильное в ожидании того, что «writeToFile» действительно выполняет запись в файл (для меня файл является постоянным хранилищем, если я записываю в файл, данные сохраняются постоянно).

Francesco

Ответы [ 3 ]

1 голос
/ 13 октября 2011

Изменить

[dict setValue:initialURL.text forKey:@"initialURL"];

на

[dict setObject:initialURL.text forKey:@"initialURL"];

Также вы не можете писать в свой пакет, вам нужно скопировать файл в папку документов приложения.

0 голосов
/ 14 января 2012

Скопируйте файл config.plist в папку «Документы» один раз при первом запуске приложения.

NSString *plistfile = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
NSString* documentPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
[NSFileManager defaultManager] copyItemAtPath:plistfile toPath:documentPath error:nil];

Затем для доступа к

- (IBAction) saveButtonTapped
{
    NSString *plistfile = [[NSBundle bundleWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]] pathForResource:@"config" ofType:@"plist"];
    NSMutableDictionary *dict =[NSMutableDictionary dictionaryWithContentsOfFile:plistfile];
    [dict setValue:initialURL.text forKey:@"initialURL"];
    [dict writeToFile:plistfile atomically:YES];
}
0 голосов
/ 13 октября 2011

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

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