问题描述
我有NSUbiquitouskeyvalueStore的扩展名,并且我了解我需要通过调用.synchronize()来同步我手动进行的更改。如果我说这可以正常工作
NSUbiquitouskeyvalueStore.habits = newValue
storage.synchronize()
但是我感到奇怪的是,如果我从设置器中进行同步,则它不起作用(更改不同步)。
class var habits: [Habit] {
get {
let data = storage.object(forKey: "AppCloud-habits") as! Data
return try! JSONDecoder().decode([Habit].self,from: data)
}
set {
guard let data = try? JSONEncoder().encode(newValue) else { return }
storage.set(data,forKey: "AppCloud-habits")
storage.synchronize()
}
}
我试图避免每次进行更改时都要调用.synchronize(),以减少发生错误的可能性,并且每次进行更改时都在setter中调用它似乎是一个更优雅的解决方案。我有什么想念的吗?
此变量是NSUbiquitouskeyvalueStore的扩展,如果有一种方法可以让所有getter调用.synchronize()
,则效果会更好。解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)