我如何监控swift中类属性的任何变化



这似乎是一个简单的问题,但现在我已经绕了很长一段尴尬的时间,所以是时候问了。检测引用对象的任何属性变化的最佳方法是什么?我使用Backendless作为后端,所以我承诺在这一点上使用类,所以使用结构体不是一个选项。

这是我一直在尝试的两种方法…

  1. 使用。objectwillchange和/或。sink的一些组合,但我只能让那些工作在一个对象的单个属性。如果我附加到对象上,它只会在我将新对象赋值给var时通知。

  2. 创建对象的副本作为检查更改的引用需要我创建某个版本的深度副本,这似乎是错误的方法,而且非常糟糕。

这里的重点是我不想"保存"对象的单个属性每次更改时。我宁愿等待并在解散或类似的情况下保存整个对象,但我找不到将对象标记为"已更改"的最佳方法。无需为每个属性编写代码……当已经有发布者时,这看起来很奇怪,但我找不到一个方法来监视任何发布事件发出的对象。或者这根本就不是正确的方法?

下面是一个具体的用例:

  1. 类实例被传递到视图。
  2. 类实例可能在视图中被更改。
  3. 在退出视图时,我需要保存对象,如果它被更改。

步骤3是我卡住的地方。我不知道如何确定类实例是否已更改。除非我需要,否则我不想运行Backendless保存功能,但我还没有找到一种方法来确定对象是否已经更改,而无需为每个属性编码。如果在swift中就是这样做的,那么它就是这样,但让我觉得我遗漏了一些东西。还是我这样处理问题错了?

试试这个

var variableName: variableType {
didSet {
// It is called after value change
}
willSet {
// It is called before value change
}
}

最新更新