观察非属性对象的变化

时间:2021-02-12 21:17:59

标签: swift key-value-observing

我正在构建一个使用共享扩展的 Mac OS 应用程序。这意味着它基本上有两个应用程序,主应用程序和共享扩展应用程序。

为了在彼此之间进行数据通信,我使用了一个共享容器套件,如下所示:

 let sharedDefaults = UserDefaults.init(suiteName: "com.myapp.sharedsuite")
 let existingData = sharedDefaults?.value(forKey: "data")

 sharedDefaults?.setValue("blah", forKey: "data")

这样数据共享就解决了。但是,我希望我的主应用程序在此数据更改时“侦听”。我无法使用 delegate 模式,因为这两个应用程序是分开的,彼此之间没有任何参考。 Notifications 我相信也是本地化和沙盒化的,所以我不能使用它们。

这留下了 KVO 模式,我希望在 sharedDefaults?.value(forKey: "data") 上的值发生变化时收到通知。问题是我不确定如何观察这个值,因为它不是我的主应用程序的 View Controller 类的属性。此外,数据对象可能是一个 structs 数组,而不是一个 NSObject,我认为这是观察属性的必要条件。

任何帮助表示赞赏。谢谢

0 个答案:

没有答案
相关问题