首页 > 解决方案 > 观察非属性对象的变化

问题描述

我正在构建一个使用共享扩展的 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,我认为这是观察属性的要求。

任何帮助表示赞赏。谢谢

标签: swiftkey-value-observing

解决方案


推荐阅读