Swift:在getter-setter内调用NSUbiquitousKeyValueStoresynchronize

问题描述

我有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 (将#修改为@)