Question

Est-ce que writeToFile: atomiquement, ajouter des données à un .plist existant? Est-il possible de modifier une valeur dans un .plist? l'application doit être recompilé pour prendre effet le changement?

J'ai une liste .plist personnalisée dans mon application. La structure est comme suit:

<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>

La balise de tableau contient plusieurs éléments avec la même structure. Je dois ajouter des éléments à la .plist existante. Est-ce possible? Je peux écrire un UIView pour le faire, le cas échéant.

* EDIT - OK, je viens d'essayer de WriteToFile en espérant qu'il écraserait atleast sinon ajouter. Étrangement, le code suivant sélectionne chemin différent lors de la lecture et de l'écriture.

NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

Le fichier .plist est dans mon projet. Je peux lire. Quand j'écris, il crée un fichier .plist et l'enregistrer dans mon /users/.../library/! Est-ce que ceci signifie quelque chose pour quelqu'un?

Était-ce utile?

La solution

Je suppose que le plist qui vient avec l'application suppose read only - il est à l'intérieur du paquet app

.

Toutes les mises à jour sont stockées dans un répertoire spécifique utilisateur, de sorte que chaque utilisateur aurait ses propres modifications spécifiques.

Autres conseils

Bien sûr, vous pouvez créer et écrire votre propre fichier .plist. Par NSArray *arrayPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *userFile=[[arrayPath objectAtIndex:0] stringByAppendingString:@"/whatever.plist"];, vous pouvez écrire / modifier.

Mais j'ai aussi la même question: Comment puis-je modifier la valeur par rapport à une clé particulière, au lieu d'écraser l'ensemble du fichier .plist

par exemple. si je veux changer la valeur « MyTitle » pour la clé « Titre » dans: <key>Title</key> <string>MyTitle</string> à « Tournesol », comment puis-je faire à partir du code

?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top