我正在开发macOS 10.13上的沙盒应用程序。它是一个类似鞋盒的应用程序,由带工具栏的主窗口组成。窗口框架和工具栏配置的自动保存在Interface Builder中设置。
如果我运行并退出应用程序,我可以在应用程序的沙盒容器中看到包含预期数据的首选项文件(名为<app-identifier>.plist
)。一切正常。
为了与其他沙盒应用程序进行数据交换,我在目标的Xcode Capabilities
标签中创建了一个应用程序组。
到目前为止,这是有效的,即在启动应用程序时会创建一个额外的组容器。通过UserDefaults
创建UserDefaults.init(suiteName:"<group-name>")
对象,也可以将共享首选项存储到组容器中。
添加应用程序组后,例如,自动保存机制工具栏配置不再有效。在干净的Mac上启动和退出应用程序不再在应用程序容器的.plist
目录中创建Preferences
文件。而是控制台显示如下消息:
[User Defaults] attempt to set <value> for key in <key> in
non-persistent preferences domain CFPrefsPlistSource<address>
(Domain: <app-identifier>, User: kCFPreferencesCurrentUser,
ByHost: No, Container: (null), Contents Need Refresh: Yes)
它找我,自动保存机制不再能够将其数据写入首选项文件。
是否可以在应用程序组中同时使用标准UserDefaults和共享用户?
答案 0 :(得分:5)
问题解决了:重新启动Mac后,一切都按预期工作。这真的很奇怪。