使用NSUserDefault在多个进程之间共享数据



我想在objective-c编译的进程和终端之间共享数据。两者都由同一用户运行。

根据objC代码,我在域a.b.c:下写了一些值

NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"a.b.c"];
[defaults setObject:@"fffff" forKey:@"bbbbb"];
[defaults synchronize];

这个过程实际上是从installer.app运行的安装程序插件,具有以下权限(没有沙盒(:

codesign -d --entitlements :- /System/Library/CoreServices/Installer.app
-->
Executable=/System/Library/CoreServices/Installer.app/Contents/MacOS/Installer
<?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">
<dict>
<key>com.apple.private.tcc.allow-prompting</key>
<array>
<string>kTCCServiceAll</string>
</array>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>

并且期望该值从使用defaults read的终端可见。但不幸的是,即使两个进程都在同一用户下运行,它也不会显示出来。

这是终端的输出:

defaults read a.b.c
2020-09-15 14:56:58.245 defaults[23380:360050] 
Domain a.b.c does not exist

知道我在这里缺了什么吗?谢谢

我是个新手,我不知道你说的"过程";。

(也许是两个程序,Xcode执行一个,终端执行一个(。

但我知道";NSUserdefaults";将数据存储在沙盒中。

终端程序没有沙盒,每个程序的沙盒是单独的。

最新更新