如何使用plutil编辑.plist文件中数组所包含的字典的键值对

时间:2017-08-22 08:43:36

标签: ios dictionary

我正在学习使用命令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

1 个答案:

答案 0 :(得分:0)

我相信你需要在引号中输入“piglet”。它应该这样工作。