在 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

mysql todays 根据时间查询

在 Heroku 上运行的 Celery beat 进程发送任务两次

mysql todays 根据时间查询

mysql todays 根据时间查询

oracle表空间extens是啥意思