Objective-C Aggiungi a file di .plist / Modifica
-
19-09-2019 - |
Domanda
La writeToFile: atomicamente, aggiungere i dati a un .plist esistente? E 'possibile modificare un valore in un .plist? Qualora l'applicazione essere ricompilato per entrare in vigore il cambiamento?
Ho una lista .plist personalizzato nella mia app. La struttura è come qui sotto:
<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>
Il tag array contiene più elementi con stessa struttura. Ho bisogno di aggiungere elementi alla .plist esistente. È possibile? Riesco a scrivere un'UIView di fare proprio questo, in caso affermativo.
* MODIFICA - OK, ho solo cercato di WriteToFile sperando che atleast sovrascrivere se non aggiungere ad essa. Stranamente, il seguente codice seleziona percorso differente durante la lettura e la scrittura.
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
Il file .plist è nel mio progetto. Riesco a leggere da esso. Quando scrivo ad esso, si sta creando un file .plist e salvandolo nella mia /users/.../library/! Per qualcuno questo ha senso?
Soluzione
Parto dal presupposto che la plist
read only
che viene fornito con l'applicazione si presume - si trova all'interno del pacchetto app
Tutti gli aggiornamenti vengono memorizzati nella directory specifica dell'utente, in modo che ogni utente dovrebbe avere le proprie modifiche specifiche.
Altri suggerimenti
Naturalmente è possibile creare e scrivere il file .plist. Con NSArray *arrayPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *userFile=[[arrayPath objectAtIndex:0] stringByAppendingString:@"/whatever.plist"];
, è possibile scrivere / modificarlo.
Ma ho anche la stessa domanda:? Come faccio a modificare il valore nei confronti di un determinato tasto, invece di sovrascrivere l'intero file .plist
es. se voglio cambiare le "MyTitle" valore per la chiave "Title" in: <key>Title</key>
<string>MyTitle</string>
a "Girasole", come posso fare che dal codice