与群组共享的UserDefaults无法使用,除非重新启动或终止应用程序

问题描述

我有一个托管应用程序和一个应用程序扩展程序,它们通过UserDefaults共享数据。它正在工作,但结果不一致。 有时,我在托管应用程序中更改了数据,而扩展程序看不到更改。如果我终止了应用和扩展程序或重新启动设备,则该扩展程序可以看到更改。

我使用单例在两个应用之间共享代码(即使它们是不同的实例,因为在两个不同的过程中也是如此):

HttpContext

有时,通常是在全新安装后,托管应用会调用class UDChecker { static let shared = UDChecker() /// App Group UserDefaults (identifier must be the same in both hosting app and extension) let userDefaults = UserDefaults(suiteName: "group.myDomain.myApp.foo") private init() {} /// Called by hosting app func setDayNumber(number: Int) { guard let ud = userDefaults else { return } print("setting new number \(number)") ud.set(number,forKey: UDChecker.kDayNumber) ud.synchronize() } /// Called by extension func getDayNumber() -> Int { if let ud = userDefaults { return ud.integer(forKey: UDChecker.kDayNumber) } return -1 } } 。 然后该扩展读取值UDChecker.shared.setDayNumber(3),但返回认值0。直到设备重新启动或应用与扩展被杀死,然后扩展读取UDChecker.shared.getDayNumber()。 / p>

这是怎么了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)