Swift 启用应用程序组时使用'defaults'CLI:";“域不存在”;

Swift 启用应用程序组时使用'defaults'CLI:";“域不存在”;,swift,macos,macos-catalina,Swift,Macos,Macos Catalina,我正在开发一个macOS应用程序,带有嵌入式,我希望该应用程序和扩展共享 该应用程序已沙盒化,以便将来在应用程序商店中分发 我按照这里的指示: 这两个目标都是同一应用程序组的一部分,如权利中所示: com.apple.security.app-sandbox com.apple.security.application-groups $(TeamIdentifierPrefix)com.stormacq.mac.MyApp com.apple.security.files.user-select

我正在开发一个macOS应用程序,带有嵌入式,我希望该应用程序和扩展共享

该应用程序已沙盒化,以便将来在应用程序商店中分发

我按照这里的指示:

  • 这两个目标都是同一应用程序组的一部分,如权利中所示:

    com.apple.security.app-sandbox
    com.apple.security.application-groups
    $(TeamIdentifierPrefix)com.stormacq.mac.MyApp
    com.apple.security.files.user-selected.read-only
    
  • 我正在通过
    suiteName
    访问UserDefaults:

    let defaults=UserDefaults.init(suiteName:“TEAM_ID.com.stormac.MyApp”)
    //其中TEAM_ID是用于签署应用程序的实际团队ID(类似于123AB45CDE)
    
  • 但是,在应用程序启动时尝试读取或写入默认值时,我收到以下错误消息:

    [用户默认值]无法在中读取值 CFPrefsPlistSource(域: TEAM_ID.com.stormacq.mac.MyApp,用户:kCFPreferencesAnyUser,按主机: 是,容器:(空),内容需要刷新:是):使用 kCFPreferencesAnyUser和容器仅允许用于系统 容器,与CFSD分离

    我发现错误消息说
    Container:(null),
    很奇怪

    将创建组容器和共享首选项文件(并包含由“我的代码”设置的正确默认值):

    我使用的是Xcode 11.7(Swift 5)和macOS 10.15.6

    共享首选项文件在
    ~/Library/Group Containers
    目录中创建,但是
    defaults
    命令行没有看到它

    ➜  ~ defaults read com.stormacq.mac.MyApp
    2020-09-07 10:25:53.188 defaults[82827:947786] 
    Domain com.stormacq.mac.MyApp does not exist
    
    ➜  ~ defaults read TEAM_ID.com.stormacq.mac.MyApp
    2020-09-07 10:26:05.088 defaults[82857:947925] 
    Domain TEAM_ID.com.stormacq.mac.MyApp does not exist
    
    非共享首选项也可以正确使用

    是否可以
    默认值
    读取
    分组容器

    ➜  ~ defaults read com.stormacq.mac.MyApp
    2020-09-07 10:25:53.188 defaults[82827:947786] 
    Domain com.stormacq.mac.MyApp does not exist
    
    ➜  ~ defaults read TEAM_ID.com.stormacq.mac.MyApp
    2020-09-07 10:26:05.088 defaults[82857:947925] 
    Domain TEAM_ID.com.stormacq.mac.MyApp does not exist