问题描述
我有一个托管应用程序和一个应用程序扩展程序,它们通过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 (将#修改为@)