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

Cocoa 从非沙盒应用程序修改沙盒应用程序的默认值,cocoa,nsuserdefaults,sandbox,Cocoa,Nsuserdefaults,Sandbox,我有一个应用程序,我现在正在沙箱中。我使用不同流程中的可访问性API进行自动验收测试。在沙箱之前,测试套件使用CFPreferencesSetValue和friends为应用程序设置某些默认值 沙盒处理后,默认值从~/Library/Containers/BUNDLEID/Data/Library/Preferences读取,但据我所知,CFPreferencesSetValue函数仅写入~/Library/Preferences 是否有一种方法可以通过编程将首选项写入沙盒首选项,而无需硬编码位

我有一个应用程序,我现在正在沙箱中。我使用不同流程中的可访问性API进行自动验收测试。在沙箱之前,测试套件使用CFPreferencesSetValue和friends为应用程序设置某些默认值

沙盒处理后,默认值从~/Library/Containers/BUNDLEID/Data/Library/Preferences读取,但据我所知,CFPreferencesSetValue函数仅写入~/Library/Preferences


是否有一种方法可以通过编程将首选项写入沙盒首选项,而无需硬编码位置和直接修改plist,或使用默认命令行实用程序。

一种解决方案是将“应用程序组”添加到沙盒应用程序中,从而允许该组的其他应用程序共享其首选项,请参阅:

事实上,还有一个更好的方法,请参见我自己问题的答案:


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

我有同样的问题。这一定是可能的,因为“defaults”命令可以访问沙盒pref,例如10.9中的“defaults read com.apple.Maps”。实际上,我甚至无法从我的非沙盒应用程序中读取沙盒pref值。例如,CFArrayRef prefs=CFPreferencesCopyKeyList(CFSTR(“com.apple.Maps”)、kCFPreferencesCurrentUser、kCFPreferencesAnyHost)不返回任何数据,但默认命令会返回。(试用10.9.1)