Obecnie używam tego koduJak mogę użyć PlistBuddy, aby uzyskać dostęp do elementu PreferencesSpecified przez jego właściwość?
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" "Test/Settings.bundle/Root.plist"
w części skryptu fazy budowy, aby umieścić produkt w wersji tylko do odczytu dziedzinie ustawieniach aplikacji. To pole ma pozycję 1 (począwszy od 0) tablicy preferencji.
Pytam, czy można użyć czegoś solidniejszego niż 1, aby uzyskać dostęp do tego pola, ponieważ pozycja może zostać przypadkowo zmieniona podczas programowania przeze mnie lub innych programistów.
Czy mogę uzyskać dostęp do tego elementu, podając jego identyfikator, niezależnie od jego pozycji?
Aby lepiej wyjaśnić moje potrzeby, zapisałem przykład. Muszę umieścić coś w rodzaju 1.2.345
w węźle string
z 2 dict
z array
, tj. Muszę zmienić z 0.0.0
na 1.2.345
. Czy jest możliwy dostęp do węzła dict
bez stwierdzenia, że jest to drugi element w tablicy? Pytam o coś podobnego do wyrażenia xpath, które będzie używane w PlistBuddy (jeśli takie istnieje).
<?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>
...
Zależy od plist (post it?). Jeśli chcesz wejść do słowa kluczowego, powinieneś umieścić go w słowniku zamiast tablicy. – geowar
Dodałem przykład pliku plist (naprawdę nie jest to plik plist, którego używam, ale nie mam go w tej chwili) – giampaolo
Tak długo, jak używasz na najwyższym poziomie, możesz uzyskać do niego dostęp tylko poprzez indeks; jeśli chcesz uzyskać do nich dostęp za pomocą konkretnych słów kluczowych, musisz zamiast tego przejść do słownika. –
geowar