target-c Добавить в / отредактировать.plist файл
Добавляет ли writeToFile: атомарно данные в существующий.plist? Можно ли изменить значение в.plist? Должно ли приложение быть перекомпилировано, чтобы изменения вступили в силу?
У меня есть собственный список.plist в моем приложении. Структура как ниже:
<array>
<dict>
<key>Title</key>
<string>MyTitle</string>
<key>Measurement</key>
<dict>
<key>prop1</key>
<real>28.86392</real>
<key>prop2</key>
<real>75.12451</real>
</dict>
<key>Distance</key>
<dict>
<key>prop3</key>
<real>37.49229</real>
<key>prop4</key>
<real>58.64502</real>
</dict>
</dict>
</array>
Тег массива содержит несколько элементов с одинаковой структурой. Мне нужно добавить элементы в существующий.plist. Это возможно? Я могу написать UIView, чтобы сделать это, если так.
* РЕДАКТИРОВАТЬ - ОК, я просто попытался записать файл, надеясь, что он будет перезаписан, если не добавить к нему. Как ни странно, следующий код выбирает другой путь при чтении и записи.
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
Файл.plist находится в моем проекте. Я могу читать из этого. Когда я пишу в него, он создает файл.plist и сохраняет его в моем /users/.../library/! Имеет ли это смысл для кого-либо?
2 ответа
Я бы предположил, что plist
предполагается, что поставляется с заявлением read only
- это внутри пакета приложения.
Любые обновления хранятся в специфической для пользователя директории, чтобы каждый пользователь имел свои специфические модификации.
Конечно, вы можете создать и написать свой собственный файл.plist. От NSArray *arrayPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *userFile=[[arrayPath objectAtIndex:0] stringByAppendingString:@"/whatever.plist"];
Вы можете написать / редактировать его.
Но у меня также есть тот же вопрос: как мне отредактировать значение для определенного ключа вместо перезаписи всего файла.plist?
Например, если я хочу изменить значение "MyTitle" для ключа "Заголовок" в: <key>Title</key>
<string>MyTitle</string>
на "Подсолнух", как я могу сделать это из кода?