ReactiveKit和Bond部分1.3
可观察的性质
如果您在前几篇文章中一直在关注,那么我一直在写关于如何使用咖喱函数来实现Target-Action模式和创建Event类的信息。 这篇文章将把所有内容汇总在一起,并展示如何在类上创建可观察的属性。 如果您还没有检查过我以前关于事件的帖子,或者没有从我链接了1亿次的Scott Logic博客中阅读此帖子,则应该这样做,以便完全了解我在这里要写的内容。 在这篇文章之后,我们将对如何完全在Swift中执行Observer模式有一个很好的理解,并且我们可以回到讨论ReactiveKit和Bond的角度。
首先,我们的目标是什么? Swift中的可观察属性会是什么样? 好吧,我们需要一个其属性设置为新值的类,该类将发出警报,告知要执行的其他功能。 例如:
蝙蝠侠类{
让numberOfSidekicks:Observable (0)
}
然后,当我们实现此类时:
VC类:UIViewController {
var bruceWayne =蝙蝠侠()
bruceWaye.numberOfSidekicks.updated.addHandler(self,handler:VC.sidekicksChanged)
func sidekicksChanged(oldValue:Int,newValue:Int){
如果oldValue> newValue {
print(“哦,没有蝙蝠侠!你的同伴之一死了!很典型。”)
}其他{
打印(“蝙蝠侠!您有一个新的助手!我们将看到持续多长时间。”)
}
}
}
//然后,如果发生这种情况:
bruceWayne.sideKicks + = 1
//控制台将打印出:“蝙蝠侠!您有一个新的助手!我们将看到持续了多长时间。”
这很酷。 我们很开心。
现在让我们构建Observable类:
class Observable {
let didChange = Event()
private var value : T
init (_ initialValue: T) {
value = initialValue
}
func set (newValue: T) {
let oldValue = value
value = newValue
didChange. raise (oldValue, newValue)
}
func get () -> T {
return value
}
}
现在,我们可以从上面构建蝙蝠侠类。
我已经引导我们走上了课堂上的可观察属性使用目标动作模式的道路。 请记住,我们这里的目标是将其转变为功能性的反应式框架,例如ReactiveKit。 我们接近了:我们已经减少了反应部分,但实际上没有功能部分。 我们如何使这些可观察的属性起作用? 我有个主意,但我想下周再说。 随时在评论中留下您的解决方案!