如何使用属性观察者的枚举(didSet,willSet)?

时间:2016-03-29 12:15:47

标签: swift

您好我正在写关于https://appventure.me/2015/10/17/advanced-practical-enum-examples/#sec-4-2

的帖子

如何在属性的didSet内的观察者模式中使用枚举?我尝试了各种方法,但对我来说没有多大意义。

有人可以举例说明吗?我试图找到答案,因为解决方案可能很有趣并且有助于保持代码清洁。

这是我正在谈论的帖子的摘录:

  

观察员模式

     

在Swift中有各种建模方法。 (...)didSet语法使得实现简单观察变得容易。可以在此使用枚举,以使观察对象发生的更改类型更清晰。想象一下收集观察。如果我们考虑它,我们只有几种可能的情况:插入一个或多个项目,删除一个或多个项目,更新一个或多个项目。这听起来像是一个枚举的工作:

enum Change {
     case Insertion(items: [Item])
     case Deletion(items: [Item])
     case Update(items: [Item])
}
  

然后,观察对象可以非常干净的方式接收发生的具体信息。这也可以通过添加oldValue和newValue轻松扩展。

由于

1 个答案:

答案 0 :(得分:0)

我认为这篇文章意图将句子分开阅读,因为它是一个关于观察的通用部分。 didSet与简单的实例变量一起使用,枚举因为它们的建议将用于包含在集合中观察到的更改的详细信息。枚举将非常有用,因为您可以打开类型,然后使用内容来了解​​该更改的详细信息。

你可以有一个简单的实例变量,以便使用这些更改信息设置枚举值,但这是不合逻辑和混乱的,它不是一个好的方法。枚举更适合于在定义回调给观察者的位置设置的自定义观察,因此控制传递的变量。