В данный момент я использую этот код
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" "Test/Settings.bundle/Root.plist"
в script часть фазы сборки, чтобы поместить версию продукта в поле только для чтения параметров приложения. Это поле имеет позицию 1 (начиная с 0) массива предпочтений.
Я спрашиваю, возможно ли использовать что-то более надежное, чтобы 1 получить доступ к этому полю, поскольку позиция может быть случайно изменена во время разработки мной или другими разработчиками.
Могу ли я получить доступ к этому элементу, определяя его идентификатор, независимо от его положения?
Чтобы лучше объяснить мои потребности, я написал пример. Мне нужно положить что-то вроде 1.2.345
в string
node из 2-го dict
из array
, то есть мне нужно изменить от 0.0.0
до 1.2.345
. Можно ли получить доступ к dict
node, не указав, что это второй в массиве? Я прошу что-то похожее на выражение xpath, которое будет использоваться в PlistBuddy (если оно существует).
<?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>
...