यह सवाल एक उप-प्रश्न/वैकल्पिक दृष्टिकोण क्या मैं इस सवाल के माध्यम से करने के लिए कोशिश कर रहा हूँ रास्ता है: How can I use PListBuddy to copy an entry from one file to another?मैं प्लिस्टबड्डी का उपयोग करके एक प्लिस्ट में ऐरे कैसे जोड़ सकता हूं?
मैं एक XCode के माध्यम से PlistBuddy का उपयोग कर Plist फ़ाइल बी को Plist फ़ाइल एक से एक प्रविष्टि कॉपी करने के लिए का निर्माण स्क्रिप्ट चाहते , बैश/शैल का उपयोग कर। ऐसा करके, मैं प्लिस्टबड्डी की "कॉपी" फ़ंक्शन का उपयोग नहीं कर सकता। मुझे प्रत्येक व्यक्ति के तत्वों के साथ प्रत्येक व्यक्तिगत प्रविष्टि की प्रतिलिपि बनाना चाहिए, क्योंकि आप शब्दकोश जोड़/सेट नहीं कर सकते हैं, लेकिन "प्रविष्टियों" के माध्यम से प्लिस्टबड्डी से बातचीत करनी चाहिए।
जो मैं करने की कोशिश कर रहा हूं वह प्लिस्ट फ़ाइल ए लेता है और "PSMultiValueSpecifier" तत्व के लिए अपने टाइटल/वैल्यू एरे स्टोर करता है। मैं सरणी में तत्वों को पकड़ने और स्क्रीन पर प्रिंट करने में सक्षम हूं, लेकिन जब मैं उन्हें गंतव्य प्लेस्ट फ़ाइल बी में जोड़ने के लिए जाता हूं, तो सरणी अभी भी खाली होती है।
कोड: (कोड जोड़ने के लिए प्रवेश ले लो करने के लिए)
# Configure the Entry
${PLISTBUDDY} -c "Add PreferenceSpecifiers:$DEST_INDEX dict" ${DEST_PLIST}
${PLISTBUDDY} -c "Add PreferenceSpecifiers:$DEST_INDEX:Type string 'PSMultiValueSpecifier'" ${DEST_PLIST}
# Retrieve the Additional Field Value
preferenceTitle=`$PLISTBUDDY -c "Print PreferenceSpecifiers:$SOURCE_INDEX:Title" $SOURCE_PLIST 2>&1`
preferenceKey=`$PLISTBUDDY -c "Print PreferenceSpecifiers:$SOURCE_INDEX:Key" $SOURCE_PLIST 2>&1`
preferenceDefaultValue=`$PLISTBUDDY -c "Print PreferenceSpecifiers:$SOURCE_INDEX:DefaultValue" $SOURCE_PLIST 2>&1`
preferenceValues=`$PLISTBUDDY -c "Print PreferenceSpecifiers:$SOURCE_INDEX:Values" $SOURCE_PLIST 2>&1`
preferenceTitles=`$PLISTBUDDY -c "Print PreferenceSpecifiers:$SOURCE_INDEX:Titles" $SOURCE_PLIST 2>&1`
कोड नई प्रविष्टि जोड़ने के लिए:
# Set the Additional Field Values
${PLISTBUDDY} -c "Add PreferenceSpecifiers:$DEST_INDEX:Title string $preferenceTitle" ${DEST_PLIST}
${PLISTBUDDY} -c "Add PreferenceSpecifiers:$DEST_INDEX:Key string $preferenceKey" ${DEST_PLIST}
${PLISTBUDDY} -c "Add PreferenceSpecifiers:$DEST_INDEX:DefaultValue integer $preferenceDefaultValue" ${DEST_PLIST}
####BORKEN####
${PLISTBUDDY} -c "Add PreferenceSpecifiers:$DEST_INDEX:Values array $preferenceValues" ${DEST_PLIST}
${PLISTBUDDY} -c "Add PreferenceSpecifiers:$DEST_INDEX:Titles array $preferenceTitles" ${DEST_PLIST}
####BORKEN####
यहाँ कोड का एक टुकड़ा है कि नीचे दिए गए डेटा का उत्पादन होता है:
echo "#########"
echo "[$THIS] adding $preference: $preferenceDict"
echo "#########"
echo "Source: "`$PLISTBUDDY -c "Print PreferenceSpecifiers:$SOURCE_INDEX:Values" $SOURCE_PLIST`
echo "Source: "`$PLISTBUDDY -c "Print PreferenceSpecifiers:$SOURCE_INDEX:Titles" $SOURCE_PLIST`
echo "#########"
echo "Destination: "`$PLISTBUDDY -c "Print PreferenceSpecifiers:$DEST_INDEX:Values" $DEST_PLIST`
echo "Destination: "`$PLISTBUDDY -c "Print PreferenceSpecifiers:$DEST_INDEX:Titles" $DEST_PLIST`
echo "#########"
यहां प्रदान किया गया डेटा यह साबित करता है कि उचित फ़ील्ड परिवहन किए जा रहे हैं
#########
[addDebugSettingsMenu.bash] adding : Dict {
Titles = Array {
Meters
Feet
}
DefaultValue = 1
Values = Array {
1
2
}
Key = UserPreferences_UnitsKey
Type = PSMultiValueSpecifier
Title = Units
}
#########
Source: Array { 1 2 }
Source: Array { Meters Feet }
#########
Destination: Array { }
Destination: Array { }
#########
कृपया प्लिस्टबड्डी की अनियंत्रित विशेषताओं के बारे में आपको कोई जानकारी है, तो कृपया मदद करें। मैन पेज सुपर पतले हैं और उदाहरण दूर और बीच हैं।
मैं इसे पढ़ने और आपके दिमाग में इस बड़े दर्द को हल करने में मदद करने के लिए अपने दिमाग उधार देने के लिए धन्यवाद देना चाहता हूं।
ऐसा करने का एक बेहतर तरीका हो सकता है, लेकिन मैंने स्रोत सरणी में तत्वों की गणना करके और फिर उन्हें व्यक्तिगत रूप से कॉपी करके इस समस्या को हल किया है। $ {PLISTBUDDY} -c "PreferenceSpecifiers जोड़ें: $ DEST_INDEX: टाइटल सरणी" $ {DEST_PLIST} $ {PLISTBUDDY} -c "PreferenceSpecifiers जोड़ें: $ DEST_INDEX: टाइटल: 0 स्ट्रिंग 'TITLE_1'" $ {DEST_PLIST} $ {PLISTBUDDY} -c "वरीयता स्पेसिफायर जोड़ें: $ DEST_INDEX: शीर्षक: 1 स्ट्रिंग 'TITLE_2'" $ {DEST_PLIST} आदि ... मैं इसे 8 घंटे या 10 प्रतिष्ठा तक उत्तर के रूप में पोस्ट नहीं कर सकता, इसलिए मैं टिप्पणी करूंगा अब के लिए – jhthorp