繁体   English   中英

为什么基于应用程序组(即suiteName)的NSUserDefaults返回不同的实例?

[英]Why are app group (i.e. suiteName)-based NSUserDefaults returning different instances?

有点难过这个。 我正在开发一个Xcode扩展,需要通过NSUserDefaults与其容器应用程序进行通信。 为此,您需要在扩展程序和容器应用程序中设置应用程序组权利,签署您的应用程序,然后初始化默认值,如此...

let defaults = UserDefaults(suiteName: "group.com.MyCo.TestCode")!

问题是即使没有抛出错误,扩展和应用程序也会获得两个不同的默认副本。

但是,如果我返回并在添加组时,保留TeamIdentifierPrefix,我最终会得到一个组名,而不是...

"03V7NBU5AX.group.com.MyCo.TestCode"

我在这样的初始化中使用哪个...

let defaults = UserDefaults(suiteName: "03V7NBU5AX.group.com.MyCo.TestCode")!

......现在一切正常! 但为什么第一个案例不起作用呢? 我看到的每个教程都说只要应用程序组匹配它就可以工作,而不是我见过的单个教程提到团队标识符前缀。 这是Xcode扩展特有的吗?

我正在遇到同样的问题。 我使用的是iOS风格的App组: group.com.MyCompany.MyTarget

这似乎在大多数情况下都有效。 但是,某些应用程序组功能突然停止工作,或者可能一直没有工作。

一个小小的研究发现了Mac特定的App Group命名要求,我以前没有意识到: macOS App Group名称应该以`group。还是开发团队ID开头?

[应用程序组ID]必须包含您的开发团队ID ,后跟一段时间,然后是开发团队选择的任意名称。 例如: DG29478A379Q6483R9214.HolstFirstAppSuite

Apple来源:

https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW19

我将我的应用程序组名称切换为:Xcode中的$(TeamIdentifierPrefix)MyAppGroup

注意缺少"." ,显然包含在$ Prefix中。 如果你添加自己的"." 应用程序组最终以".."结束

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM