Вы не обновляете и не удаляете что-либо из файла plist.Это немного сложнее:
- Считать файл plist в память
- Изменить версию в памяти
- Записать новую версию обратно на диск
Чтение в списках довольно тривиально.В вашем случае, поскольку корневой элемент является массивом, вы должны сделать:
NSMutableArray * plistContents = [NSMutableArray arrayWithContentsOfFile:plistFilePath];
Здесь мы создаем изменяемый массив, поскольку мы знаем, что мы собираемся что-то изменить в нем.Если мы просто хотим прочитать информацию, мы должны использовать NSArray
вместо NSMutableArray
.
Изменить версию в памяти так же просто, как манипулировать стандартными контейнерами:
//delete the first dictionary:
[plistContents removeObjectAtIndex:0];
//Change a dictionary's full name:
NSMutableDictionary * firstDictionary = [[plistContents objectsAtIndex:0] mutableCopy];
[firstDictionary setObject:@"Mike" forKey:@"fullName"];
[plistContents replaceObjectAtIndex:0 withObject:firstDictionary];
[firstDictionary release];
Здесь мы должны сделать изменяемую (изменяемую) копию словаря, так как чтение в plist создает только неизменный NSDictionary
.Таким образом, мы копируем словарь, изменяем значение, которое мы хотим изменить, а затем заменяем исходный словарь нашим новым измененным словарем.
Запись списка на диск также проста:
//be sure you have write-permissions first!
[plistContents writeToFile:plistFilePath atomically:YES];