gpt4 book ai didi

ios - 应用程序和扩展程序之间的共享 UserDefaults 无法正常工作

转载 作者:IT王子 更新时间:2023-10-29 05:15:47 24 4
gpt4 key购买 nike

所以我一直在四处寻找并按照所有步骤正确设置共享 UserDefaults,但我应该遗漏了一些东西。

我的应用程序和扩展程序都激活了应用程序组功能。两者都使用相同的套件名称 ("group.TestSharedPreferences"),我这样写:

struct Preferences {
static let shared = UserDefaults(suiteName: "group.TestSharedPreferences")!
}

viewDidLoad 上:

Preferences.shared.set(1, forKey: "INT")

阅读:

Preferences.shared.integer(forKey: "INT") // Returns 1 in Container App
Preferences.shared.integer(forKey: "INT") // Returns 0 in Today Extension

即使在设置"INT" 后立即使用synchronize(),扩展中检索到的值也不是容器App 中保存的值。关于我可能会遗漏什么的任何想法?谢谢!

最佳答案

我建议在这里一步步往下挖掘。

首先,确保主应用和小部件扩展都启用了应用组功能,并使用相同的并激活(必须设置复选标记)应用组名称:

主应用: Main App

今日小部件扩展:

Today Widget Extension

然后使用直接设置/获取访问进行简单测试。在您的主应用程序的 AppDelegate.didFinishLaunchingWithOptions 方法中(根据您的需要更改应用程序组名称和键):

if let userDefaults = UserDefaults(suiteName: "group.de.zisoft.GPS-Track") {
userDefaults.set("test 1" as AnyObject, forKey: "key1")
userDefaults.set("test 2" as AnyObject, forKey: "key2")
userDefaults.synchronize()
}

在您的 Today Widget Extension 的 ViewController 中:

if let userDefaults = UserDefaults(suiteName: "group.de.zisoft.GPS-Track") {
let value1 = userDefaults.string(forKey: "key1")
let value2 = userDefaults.string(forKey: "key2")
...
}

如果这有效,问题一定与您的Preferences 单例有关。

关于ios - 应用程序和扩展程序之间的共享 UserDefaults 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40065655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com