target-c Добавить в / редактировать файл .plist - PullRequest
1 голос
/ 12 марта 2010

Записывает ли 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 ]

1 голос
/ 16 июля 2010

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

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

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

1 голос
/ 12 марта 2010

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

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

...