By default,your containing app and its extensions have no direct access to each other’s containers.
这意味着扩展和包含应用程序不共享数据。但在同一页苹果带来了一个解决方案:
If you want your containing app and its extensions to be able to share data,use Xcode or the Developer portal to enable app groups for the app and its extensions. Next,register the app group in the portal and specify the app group to use in the containing app.
然后,可以使用NSUserDefaults在包含应用程序和扩展之间共享数据。这正是我想做的。但由于某种原因,它不工作。
在同一页面中,Apple建议使用标准默认值:
var defaults = NSUserDefaults.standardUserDefaults()
在WWDC演示(217)中,他们建议一个通用包:
var defaults = NSUserDefaults(suiteName: kDefaultsPackage)
此外,我针对包含应用程式目标和扩充功能目标的应用程式群组启用了同一个应用程式群组名称:
但所有这些设置是无所事事。我无法从扩展名检索存储在包含应用程序中的数据。这就像两个目标使用完全不同的NSUserDefaults存储。
所以,
>这个方法有解决方案吗?
>如何在包含应用程序和共享扩展名之间共享简单的数据?数据只是API的用户凭据。
保存数据:
NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.yougroup"]; [shared setObject:object forKey:@"yourkey"]; [shared synchronize];
读取数据:
NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.yougroup"]; id value = [shared valueForKey:@"yourkey"]; NSLog(@"%@",value);
这将工作得很好!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。