修改非沙盒应用程序中沙盒应用程序的默认值

时间:2013-02-08 09:57:25

标签: cocoa nsuserdefaults sandbox

我有一个应用程序,我现在正在沙盒中。我使用来自不同进程的辅助功能API进行自动验收测试。在沙盒之前,测试套件使用CFPreferencesSetValue和朋友为应用程序设置某些默认值。

在沙盒之后,默认值是从〜/ Library / Containers / BUNDLEID / Data / Library / Preferences中读取的,但据我所知,CFPreferencesSetValue函数只写入〜/ Library / Preferences。

是否有办法以编程方式将首选项写入沙盒首选项,而不用例如硬编码位置并直接修改plist,或使用defaults命令行实用程序。

2 个答案:

答案 0 :(得分:1)

一种解决方案是在您的沙盒应用中添加“应用程序组”,从而允许该组的其他应用程序共享其首选项,请参阅:Reading NSUserDefaults from helper app in the sandbox

答案 1 :(得分:1)

实际上,有更好的方法,请在此处查看我自己的问题的答案:How does OS X's defaults command get access to prefs of sandboxed apps?

诀窍是使用沙盒容器中首选项文件的完整路径,减去“.plist”扩展名作为应用程序ID。