Betrachten wir eine Präferenz plist mit einem dict, die ein Array enthält:Wie füge ich verschachtelten Arrays oder Dicts mit dem Befehl "defaults write" Werte hinzu?
Lassen Sie uns es schaffen:
defaults write org.my.test '{aDict = {anArray =();};}'
es dann besser die Struktur zu sehen, lesen Sie zurück:
$defaults read org.my.test
{
aDict = {
anArray = (
);
};
}
Nun, wie Ich füge anArray
einen Wert mit dem Befehl defaults write
hinzu?
Ich weiß, dass es den -array-add
Typ zum Hinzufügen von Werten zu einem Array gibt, aber wie gebe ich den Schlüsselpfad zum Array-Element?
ich dies habe es versucht, aber das funktioniert nicht:
defaults write org.my.test aDict.anArray -array-add "a value"
In der Tat muss ich einen Nicht-String-Typ hinzufügen, also muss ich auch in der Lage sein, die Art angeben, zum Beispiel -bool YES
.
(Anmerkung: Ich kann nicht verwenden PlistBuddy noch plutil wie diese Live-Präferenzen zu beeinflussen braucht)
Das Problem mit dieser Lösung ist, dass es nicht mit Voreinstellungsdateien funktioniert, da diese seit 10.8 oder so zwischengespeichert werden, daher wird die Änderung der Dateien auf der Festplatte den Cache nicht entsprechend aktualisieren. Und ich muss dies mit Voreinstellungen tun ("User Defaults"). –