征服ReactiveSwift:属性(第5部分)

欢迎来到征服ReactiveSwift系列文章的第5部分。 在上一篇文章中,我们学习了如何创建,启动和观察SignalProducer 。 在本文中,我们将讨论PropertyMutableProperty的概念

定义

属性

Property是一个可观察的容器,只要更改其值,它就会发出其值。 它符合PropertyProtocolPropertyProtocol本身具有以下属性:

  • value :代表当前值
  • producer :一个SignalProducer,它发送当前值以及随后的更改。 当属性取消初始化或没有进一步更改时,此操作完成。
  • signal :一个信号,它发送随后的更改, 而不是当前值。属性取消初始化或没有进一步更改时,此操作完成。

有什么用?

当我们只需要处理值而不是错误时,这是​​非常有用的。

让我们考虑上一篇文章中的示例。

每隔五秒打印一次时间信息,间隔五十秒。

为此,我们创建了一个SignalProducer,如下所示:

请注意,这里的错误类型为NoError ,这意味着我们不在这里处理错误。 当我们可以将其包装在Property中时,这是一个很好的用例

因此,让我们定义一个Property

在这里,属性的初始值为’0’,随后的值由signalProducer返回。

如前所述,Property具有signalproducer属性,两者都可以观察到,但主要区别在于信号不会发出当前值,只有随后对该值进行更改。

观察属性信号

在此示例中,我们创建了一个属性,该属性从SignalProducer中获取值。 我们还可以创建一个属性,该属性也可以从Signal中获取值。

可变属性

MutableProperty是一个可观察的容器,它像Property一样在更改时发出值,但是也可以直接对其进行突变。 与Property类似,它也符合PropertyProtocol

MutableProperty可以使用如下初始值进行初始化:

然后,我们可以如下更新其当前值:

就像Property一样,可以观察MutablePropertysignalproducer

当执行Bindings时, MutableProperty很有用。 然后MutableProperty允许我们编写如下代码:

在这里,这意味着mutablePropertyvaluemutableProperty决定。 我们将在后续文章中讨论有关绑定的更多信息。

结论

希望本文能使您对PropertyMutableProperty有所了解。 您可以在此处找到示例代码。 在下一篇文章中,我们将介绍Action ,它使您可以更好地控制和执行Signal的行为。