Frage

Does writeToFile: atomar, fügen Sie Daten zu einem bestehenden .plist? Ist es möglich, einen Wert in einer .plist zu ändern? Sollte die App zu übernehmen die Änderung neu übersetzt werden?

Ich habe eine benutzerdefinierte .plist Liste in meiner app. Die Struktur ist wie folgt:

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

Der Array-Tag enthält mehrere Elemente mit derselben Struktur. Ich brauche Elemente in dem bestehenden .plist hinzuzufügen. Ist das möglich? Ich kann eine UIView schreiben genau das zu tun, wenn ja.

* EDIT - OK, ich habe gerade versucht zu WriteToFile gehofft, wäre es atleast überschreiben, wenn nicht etwas hinzufügen. Merkwürdigerweise der anderen Weg wählt folgenden Code beim Lesen und Schreiben.

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

Die .plist-Datei ist in meinem Projekt. Ich kann von ihm lesen. Wenn ich es schreiben, wird eine .plist-Datei erstellen und es in meinem /users/.../library/ gespart! Macht das Sinn zu anyone?

War es hilfreich?

Lösung

Ich würde davon ausgehen, dass die plist, die mit Anwendung kommt angenommener read only ist -. Es in dem App-Bundle ist

Alle Updates in benutzerspezifische Verzeichnis gespeichert werden, so dass jeder Benutzer ihre eigenen spezifischen Modifikationen haben.

Andere Tipps

Natürlich können Sie Ihre eigene .plist-Datei erstellen und schreiben. Durch NSArray *arrayPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *userFile=[[arrayPath objectAtIndex:0] stringByAppendingString:@"/whatever.plist"];, können Sie es bearbeiten / schreiben.

Aber ich habe auch die gleiche Frage: Wie kann ich den Wert gegen einen bestimmten Schlüssel bearbeiten, anstatt die ganze .plist Datei überschrieben

z. wenn ich den Wert „MyTitle“ für den Schlüssel „Titel“ in ändern möge: <key>Title</key> <string>MyTitle</string> zu „Sunflower“, wie kann ich tun, dass aus dem Code

?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top