为什么基于应用程序组(即 suiteName)的 NSUserDefaults 返回不同的实例?
Why are app group (i.e. suiteName)-based NSUserDefaults returning different instances?
有点被这个难住了。我正在开发一个需要通过 NSUserDefaults 与其容器应用程序通信的 Xcode 扩展。为此,您需要在扩展程序和容器应用程序中设置一个应用程序组授权,签署您的应用程序,然后像这样初始化默认值...
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 风格的应用程序组:group.com.MyCompany.MyTarget
这似乎在大多数情况下都有效。但是后来某些 App Group 功能突然停止工作,或者可能一直没有工作。
一些研究发现了 Mac 我以前不知道的特定应用程序组命名要求:
[The App Group ID] must consist of your development team ID, followed by a period, followed by an arbitrary name chosen by your development team. For example: DG29478A379Q6483R9214.HolstFirstAppSuite
Apple 来源:
我将我的应用组名称更改为:$(TeamIdentifierPrefix)MyAppGroup
in Xcode。
注意缺少 "."
,这显然包含在 $Prefix 中。如果您添加自己的 "."
,应用程序组将以 ".."
结尾
有点被这个难住了。我正在开发一个需要通过 NSUserDefaults 与其容器应用程序通信的 Xcode 扩展。为此,您需要在扩展程序和容器应用程序中设置一个应用程序组授权,签署您的应用程序,然后像这样初始化默认值...
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 风格的应用程序组:group.com.MyCompany.MyTarget
这似乎在大多数情况下都有效。但是后来某些 App Group 功能突然停止工作,或者可能一直没有工作。
一些研究发现了 Mac 我以前不知道的特定应用程序组命名要求:
[The App Group ID] must consist of your development team ID, followed by a period, followed by an arbitrary name chosen by your development team. For example:
DG29478A379Q6483R9214.HolstFirstAppSuite
Apple 来源:
我将我的应用组名称更改为:$(TeamIdentifierPrefix)MyAppGroup
in Xcode。
注意缺少 "."
,这显然包含在 $Prefix 中。如果您添加自己的 "."
,应用程序组将以 ".."