【问题标题】:iOS: App Groups missing user default keyiOS:应用程序组缺少用户默认键
【发布时间】:2018-06-07 08:25:11
【问题描述】:

我有一个带有今天扩展的应用程序。我已经在开发者门户中创建了一个应用组,并在我的 xcode 项目中创建了目标,将组链接到我的应用和今天的目标的功能中。

所以在应用程序端,我会像这样保存我的值:

NSUserDefaults *prefs = [[NSUserDefaults alloc] initWithSuiteName:suite];
[prefs setObject:value forKey:key];
[prefs synchronize];

套件属性是我在开发人员门户中创建的组的名称。值是一个 NSDictionary。

 NSDictionary* savedDict = [prefs objectForKey:key];

调用它会给我正确的值

在扩展方面,我正在使用 swift 并尝试像这样获取我的 UserDefaults

let userDefaults = UserDefaults.init(suiteName: "group.cryptochange.favorites")
let savedDict = userDefaults?.dictionary(forKey: "Favorites");

问题是,savedDict 是 nil。

当我打印出用户默认值中的所有键时,我会在应用程序端看到“收藏夹”键,但如果我打印出扩展程序中的键,则此键丢失。

有人知道问题可能出在哪里或什么地方吗?

提前致谢

编辑 1: 我只是认识到它可以与调试版本一起使用,但当我将方案更改为发布时却不行

编辑 2: 我刚刚检查了我的应用程序的文档目录,并查看了我的应用程序组文件,其中包含我保存的值。 当我查看扩展的文档目录时,没有这样的文件。这是否按预期工作? 在我的扩展代码中设置一个“测试”值后,文件会显示测试值

【问题讨论】:

标签: ios objective-c swift nsuserdefaults today-extension


【解决方案1】:
  1. 您必须确保: 套件 =“group.cryptochange.favorites” key = "收藏夹"

  2. 你必须检查扩展是组应用程序的成员

  3. 您应该检查“演员类型”是否正确

希望我的回答有用

【讨论】:

  • 嗨 Tran 感谢您的回答。我已经检查了 1 和 2。我还检查了第三点。问题是,当我调用 userdefaults.dictionaryrepresentation.keys 时,我什至没有看到我的“收藏夹”键
猜你喜欢
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多