Objective-C Ajouter / Modifier le fichier .plist
-
19-09-2019 - |
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?
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