【发布时间】: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: 我刚刚检查了我的应用程序的文档目录,并查看了我的应用程序组文件,其中包含我保存的值。 当我查看扩展的文档目录时,没有这样的文件。这是否按预期工作? 在我的扩展代码中设置一个“测试”值后,文件会显示测试值
【问题讨论】:
-
来自 Apple 的文档...
synchronize()"...这种方法是不必要的,不应该使用。" developer.apple.com/documentation/foundation/userdefaults/…
标签: ios objective-c swift nsuserdefaults today-extension