iOS:应用组缺少用户默认密钥



我有一个带有今天扩展的应用程序。我已经在开发人员门户中创建了一个应用组,并在 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 是零的。

当我打印出用户默认值中的所有键时,我在应用程序端看到"收藏夹"键,但如果我要打印出扩展中的键,则缺少此键。

有谁知道问题可能在哪里或是什么?

提前致谢

编辑 1: 我只是认识到它适用于调试版本,但当我更改方案以发布时则不然

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

  1. 你必须确保: Suite = "group.cryptochange.favorites" 键 ="收藏夹">

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

  3. 您应该查看"强制转换类型"是否正确

我希望我的答案有用

最新更新