फिलहाल मैं आवेदन सेटिंग्स की एक रीड ओनली फ़ील्ड में उत्पाद संस्करण डाल करने के लिए इस कोड कोमैं अपनी संपत्ति द्वारा निर्दिष्ट प्राथमिकताओं के तत्व तक पहुंचने के लिए प्लिस्टबड्डी का उपयोग कैसे कर सकता हूं?
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" "Test/Settings.bundle/Root.plist"
उपयोग कर रहा हूँ निर्माण चरण के स्क्रिप्ट भाग में। उस फ़ील्ड में वरीयता सरणी की स्थिति 1 (0 से शुरू) है।
मैं पूछ रहा हूं कि क्या उस क्षेत्र तक पहुंचने के लिए कुछ और मजबूत उपयोग करने की संभावना है क्योंकि स्थिति मेरे या अन्य डेवलपर्स द्वारा विकास के दौरान गलती से बदल दी जा सकती है।
क्या मैं उस तत्व को एक्सेस कर सकता हूं जो इसकी पहचान के बावजूद पहचानकर्ता निर्दिष्ट करता है?
मेरी ज़रूरतों को बेहतर ढंग से समझाने के लिए, मैंने एक उदाहरण लिखा। मुझे 1.2.345
string
के array
के नोड को 0.0.0
से 1.2.345
में बदलने की आवश्यकता है। क्या यह dict
नोड तक पहुंचने के बिना संभव है कि यह सरणी में दूसरा है? मैं PlistBuddy में उपयोग किए जाने वाले xpath अभिव्यक्ति के समान कुछ मांग रहा हूं (यदि कोई मौजूद है)।
<?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>
...
प्लेस्ट पर निर्भर करता है (इसे पोस्ट करें?)। यदि आप एक कीवर्ड संदर्भित प्रविष्टि चाहते हैं तो आपको इसे सरणी के बजाय एक शब्दकोश में रखना चाहिए। – geowar
मैंने प्लिस्ट का एक उदाहरण जोड़ा (वास्तव में मैं जिस प्लिस्ट का उपयोग कर रहा हूं, लेकिन मैं इस समय उपलब्ध नहीं हूं) – giampaolo
जब तक आप शीर्ष स्तर पर का उपयोग करते हैं तो आप इसे केवल अनुक्रमणिका द्वारा एक्सेस कर सकते हैं; यदि आप विशिष्ट कीवर्ड द्वारा इन तक पहुंचना चाहते हैं तो आपको इसके बजाय एक शब्दकोश में स्विच करना होगा। –
geowar