【发布时间】:2019-03-29 04:22:13
【问题描述】:
最近,我一直在制作一个简单的 iOS 8 共享扩展来了解系统的工作原理。正如苹果在其App Extension Programming Guide 中所说:
默认情况下,您的包含应用及其扩展无法直接访问彼此的容器。
这意味着扩展程序和包含的应用程序不共享数据。但在同一页面中,Apple 带来了解决方案:
如果您希望包含应用程序及其扩展程序能够共享数据,请使用 Xcode 或开发者门户为应用程序及其扩展程序启用应用程序组。接下来,在门户中注册应用组并指定要在包含应用中使用的应用组。
然后可以使用 NSUserDefaults 在包含应用程序和扩展程序之间共享数据。这正是我想做的。但由于某种原因,它不起作用。
在同一页面中,Apple 建议使用标准默认值:
var defaults = NSUserDefaults.standardUserDefaults()
在 WWDC 演示文稿 (217) 中,他们提出了一个通用包:
var defaults = NSUserDefaults(suiteName: kDefaultsPackage)
此外,我为包含应用程序目标和扩展程序目标启用了应用程序组,具有相同的应用程序组名称:
但所有这些设置都是徒劳的。我无法从扩展中检索存储在包含应用程序中的数据。这就像两个目标使用完全不同的 NSUserDefaults 存储。
所以,
- 这种方法有解决方案吗?
- 如何在包含应用程序和共享扩展程序之间共享简单数据?数据只是 API 的用户凭据。
【问题讨论】:
-
这可能对你有帮助:stackoverflow.com/q/24015506/1586692 但我仍然有这样的问题:stackoverflow.com/q/24067975/1586692
标签: ios swift ios-app-extension userdefaults