Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用plistbuddy读取plist中的字典中的所有键_Ios_Dictionary_Plist - Fatal编程技术网

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

Ios 使用plistbuddy读取plist中的字典中的所有键,ios,dictionary,plist,Ios,Dictionary,Plist,我想从使用plistbuddy的plist中读取字典中的所有键,并将值推送到数组中。 我知道下面的实用程序有助于阅读plist。 /usr/libexec/PlistBuddy 到目前为止,我正在硬编码的关键,以获得价值。 例如:theKey=“selva” 所以我写下面的代码来获取上面键的值 val=$(function_stringFields "${theFile}" "${theKey}" "${index}") (函数\u stringFields是一种自定义方法。) 无论如何,是否

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

到目前为止,我正在硬编码的关键,以获得价值。 例如:theKey=“selva”

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

val=$(function_stringFields "${theFile}" "${theKey}" "${index}")
函数\u stringFields
是一种自定义方法。)

无论如何,是否有办法实现同样的目标

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

这将创建一个数组
keys
,其中包含所有顶级键。它所做的只是寻找以四个空格、一个键和“=”开头的输出。实现这一点的关键是plistbuddy的打印选项。 如果没有参数,它将打印所有行

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

这项工作的成功将真正取决于你在plist中建造了什么样的树。如果它是平的,你会更快乐。此示例也不考虑值中的空格(它们将被删除)

LINES=`/usr/libexec/PlistBuddy FrameworkList.plist-c print | grep=| tr-d''`
计数器=0
对于美元行中的PLIST_项目;
做
键[${COUNTER}]=`echo$PLIST_ITEMS | cut-d=-f1`
值[${COUNTER}]=`echo$PLIST_ITEMS | cut-d=-f2`
计数器=${COUNTER}+1

完成
如果我回显$行,则语句将不带任何空格。实际plist语句的键为“sog”,值为“Stack overflow是一个好博客”。但@LINES的结果是“sog”,值为“Stackoverflowisagoodblog”@无论谁回答,首先我应该承认我对shell脚本已经有2天了。我正在努力理解你的回答。虽然问题是针对plistBuddy的,但人们可能希望签出swift脚本