从plist使用plistbuddy读取字典中的所有键

时间:2015-01-16 14:05:57

标签: ios dictionary plist

我想要读取字典中的所有键,这些键在plist中使用plistbuddy并将值推送到数组中。 我知道下面的实用程序有助于阅读plist。 的/ usr /的libexec / PlistBuddy

到目前为止,我很难对密钥进行编码以获得价值。 例如:theKey =" selva"

所以我写下面的代码来获取上面的值

val=$(function_stringFields "${theFile}" "${theKey}" "${index}")

function_stringFields是一种自定义方法。)

无论如何都要实现同样的目标。

2 个答案:

答案 0 :(得分:2)

plist_file=/Applications/iTunes.app/Contents/Info.plist
keys=(`/usr/libexec/PlistBuddy -c Print "$plist_file" | perl -lne 'print $1 if /^    (\S*) =/'`)

这将创建一个包含所有顶级键的数组keys。它所做的只是寻找以四个空格开头然后是一个键的输出,然后是" ="。

答案 1 :(得分:1)

完成此任务的关键是plistbuddy的打印选项。 没有参数,它将打印出所有行。

这是一个小脚本,它将加载一组键和值数组。

这的成功将取决于您在plist中可能构建的树类型。如果它是平的,你会更快乐。此示例也未考虑值中的空格(它们将被删除)。



LINES=`/usr/libexec/PlistBuddy FrameworkList.plist -c print | grep = | tr -d ' '`

COUNTER=0

for PLIST_ITEMS in $LINES;
do
  KEY[${COUNTER}]=`echo $PLIST_ITEMS | cut -d= -f1`
  VALUE[${COUNTER}]=`echo $PLIST_ITEMS | cut -d= -f2`
  COUNTER=${COUNTER}+1
done