Al momento sto usando questo codiceCome posso utilizzare PlistBuddy per accedere a un elemento di PreferencesSpecified dalla sua proprietà?
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" "Test/Settings.bundle/Root.plist"
in parte copione della fase di costruzione di mettere versione del prodotto in un campo di sola lettura delle impostazioni dell'applicazione. Questo campo ha la posizione 1 (a partire da 0) dell'array delle preferenze.
Mi chiedo se sia possibile utilizzare qualcosa di più robusto per accedere a quel campo poiché la posizione può essere modificata accidentalmente durante lo sviluppo da me o da altri sviluppatori.
Posso accedere a quell'elemento specificando il suo identificatore indipendentemente dalla sua posizione?
Per spiegare meglio le mie esigenze, ho annotato un esempio. Devo inserire qualcosa come 1.2.345
nel nodo string
del 2o dict
di array
, ovvero devo passare da 0.0.0
a 1.2.345
. È possibile accedere al nodo dict
senza affermare che è il secondo nell'array? Sto chiedendo qualcosa di simile a un'espressione xpath da utilizzare in PlistBuddy (se esiste).
<?xml version="1.0" encoding="UTF-8"?>
<dict>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Title</key>
<string>Application info</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<string>0.0.0</string>
<key>Key</key>
<string>version</string>
<key>Title</key>
<string>Version</string>
<key>Type</key>
<string>PSTitleValueSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<string>0</string>
<key>Key</key>
<string>build</string>
<key>Title</key>
<string>Build</string>
<key>Type</key>
<string>PSTitleValueSpecifier</string>
</dict>
...
Dipende dal plist (post-it?). Se si desidera una voce di riferimento a parola chiave, è necessario inserirla in un dizionario anziché in un array. – geowar
Ho aggiunto un esempio di plist (non proprio il plist che sto usando, ma non l'ho disponibile al momento) – giampaolo
Finché si utilizza al livello superiore, è possibile accedervi solo per indice; se si desidera accedervi tramite parole chiave specifiche, sarà necessario passare a un dizionario. –
geowar