在 iOS App 和 Todays Extension 之间共享数据
Posted
技术标签:
【中文标题】在 iOS App 和 Todays Extension 之间共享数据【英文标题】:Sharing Data Between iOS App and Todays Extension 【发布时间】:2015-04-24 20:20:15 【问题描述】:我有一个使用设备上数据库的 ios 应用程序。我想从我的 App Extension 访问数据库。数据库访问需要我插入到 NSUserDefaults 中的路径,如下所示。我首先运行触发以下代码的 App Target。
NSUserDefaults *userDefaults = [[NSUserDefaults alloc] init];
[userDefaults setValue:databasePathFromApp forKey:@"DatabasePath"];
[userDefaults synchronize];
然后我运行 Todays 扩展程序,它访问由主应用程序设置的 NSUserDefaults。
NSUserDefaults *userDefaults = [[NSUserDefaults alloc] init];
_databasePath = [userDefaults valueForKey:@"DatabasePath"];
_databasePath 始终为零。我究竟做错了什么?我是否必须使用 App Groups 在应用程序和今天的扩展程序之间共享数据库。
【问题讨论】:
Sharing data between an iOS 8 share extension and main app的可能重复 【参考方案1】:您应该像下面这样使用 NSUserDefaults,并确保您必须在您的临时配置文件中启用应用程序组,并且应用程序组必须配置为绿色符号,并且它应该添加到您的临时配置文件和 BundleID。
NSUserDefaults *sharedUserDefault = [[NSUserDefaults alloc] initWithSuiteName:@"group.yougroup"]; [sharedUserDefault setObject:object forKey:@"yourkey"]; [sharedUserDefault 同步];
NSUserDefaults *sharedUserDefault = [[NSUserDefaults alloc] initWithSuiteName:@"group.yougroup"]; sharedUserDefault value = [sharedUserDefault valueForKey:@"yourkey"];
【讨论】:
请不要对多个问题发布相同的答案。发布一个好的答案,然后投票/标记以关闭其他问题作为重复问题。如果问题不是重复的,调整您对该问题的回答。以上是关于在 iOS App 和 Todays Extension 之间共享数据的主要内容,如果未能解决你的问题,请参考以下文章
iOS Todays 小部件扩展 - 动画 UISlider