我正在学习使用命令plutil来编辑.plist文件。我遇到了这个问题:如果我想在数组中编辑字典的键值对,我该如何处理keypath
?
文件内容如下所示:
[heping@Totoro:~ 17:10]# plutil -p /Users/heping/Desktop/test.plist
{
"array" => [
0 => {
"weight" => 153
"name" => "pig"
}
1 => {
"weight" => 3
"name" => "cat"
}
]
}
我尝试检索第一个项目的name
,成功地我得到了这个:
[heping@Totoro:~ 17:13]# plutil -extract array.0.name xml1 -o - -- /Users/heping/Desktop/test.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<string>pig</string>
</plist>
但是当我尝试替换第一项name
时,我收到错误,我无法理解为什么会这样。
[heping@Totoro:~ 17:17]# plutil -replace array.0.name -string piglet /Users/heping/Desktop/test.plist
/Users/heping/Desktop/test.plist: Could not modify plist, error: Failed to insert value piglet at key path array.0.name with error -[NSTaggedPointerString characterAtIndex:]: Index 0 out of bounds; string length 0
答案 0 :(得分:0)
我相信你需要在引号中输入“piglet”。它应该这样工作。