Как мне переписать список, если его типы данных неизменны? - PullRequest
0 голосов
/ 22 апреля 2010

Мне становится удобнее использовать списки для инициализации моего приложения. Теперь я хочу сохранить состояние приложения обратно в список, используемый для инициализации приложения, и я застрял. При запуске приложения я принимаю plist в NSDictionary, который является неизменным. Теперь я хочу обновить NSDictionary, заменив старые значения новыми значениями для существующих ключей и записав их в список с помощью [NSDictionary writeToFile: atomically]. Как мне обойти неизменность NSDictionary?

Спасибо, Дуг

ОБНОВЛЕНИЕ - Еще не совсем там

Я последовал предложению zneak и включил свой файл настроек в NSMutableDictionary. Работает отлично. Перед тем, как написать лист, я подтверждаю, что новые значения теперь заменяют старые. Здорово. Хорошо идти.

Проблема: когда я пишу файл таким образом:

if ([self.settings writeToFile:plistPath atomically:YES] == NO) {

    NSLog(@"Unable to write plist");
}

Метод успешно завершен правильно - условным является ДА, а не НЕТ - но я не вижу файла. Куда пропал файл?

Разве я не вижу новый файл в своем дереве каталогов?

Ответы [ 2 ]

1 голос
/ 22 апреля 2010

Сделайте его NSMutableDictionary, позвонив -[myDict mutableCopy], затем используйте его для записи файла; или просто загрузите plist, используя [NSMutableDictionary dictionaryWithContentsOfFile:(NSString*)], чтобы получить изменяемый экземпляр для запуска вместо неизменяемого.

0 голосов
/ 22 апреля 2010

Используйте NSMutableDictionary (вы можете использовать -[NSDictionary mutableCopy] для его создания).Затем вы можете использовать writeToFile так же, как с NSDictionary.

...