25

考虑一个带有包含数组的 dict 的首选项 plist:

让我们创建它:

defaults write org.my.test '{aDict = {anArray = ();};}'

然后将其读回以更好地查看结构:

$defaults read org.my.test
{
    aDict = {
        anArray = (
        );
    };
}

现在,如何anArray使用defaults write命令添加值?

我知道有-array-add向数组添加值的类型,但是如何指定数组元素的键路径?

我试过这个,但这不起作用:

defaults write org.my.test aDict.anArray -array-add "a value"

事实上,我需要添加一个非字符串类型,所以我还需要能够指定类型,例如-bool YES.

(注意:我不能使用PlistBuddyplutil,因为这需要影响实时偏好)

4

1 回答 1

7

使用plutil,您的生活会更美好。默认值不支持关键路径。

> defaults write org.my.test '{aDict = {anArray = ();};}'

> defaults read org.my.test
{
    aDict =     {
        anArray =         (
        );
    };
}

> plutil -insert aDict.anArray.0 -bool YES ~/Library/Preferences/org.my.test.plist

> defaults read org.my.test
{
    aDict =     {
        anArray =         (
            1
        );
    };
}

我曾经defaults read只是为了证明预期的输入是相同的,但是如果您开始使用更多,您可能会使用plutil -p ~/Library/Preferences/org.my.test.plist读取文件来代替。plutil

于 2016-12-19T04:00:37.190 回答