Вопрос

Добавляет ли 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/!Имеет ли это смысл для кого-нибудь?

Это было полезно?

Решение

Я бы предположил, что plist предполагается, что оно поставляется с приложением read only - он находится внутри пакета приложения.

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

Другие советы

Конечно, вы можете создать и написать свой собственный файл .plist.К NSArray *arrayPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *userFile=[[arrayPath objectAtIndex:0] stringByAppendingString:@"/whatever.plist"]; , вы можете написать/отредактировать его.

Но у меня тоже тот же вопрос:Как мне отредактировать значение определенного ключа вместо того, чтобы перезаписывать весь файл .plist?

Например.если я хочу изменить значение «MyTitle» для ключа «Title» в: <key>Title</key> <string>MyTitle</string> на «Подсолнух», как это сделать из кода?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top