rxSwift从零开始的代码7
2018-02-28 本文已影响0人
卖毛玉的小贩
本次讲解最后一个subject。
这个subject是我们工作过程中因为某种需要而出来的,比如及时响应某个控件等。
根据响应式的值而出现的subject叫做Variable。
我们先定义一个Variable。
let subject =Variable<string>("swift")
string是泛型,里面可以是任意的类型,创建的时候和泛型统一即可。
接下来我们来订阅他。
注意,当我们.的时候发现展开来只有一个asObservable。
这是因为,当我们要订阅一个Variable对象的时候,要先明确使用asObservable()方法。而不像其他subject一样直接订阅。
所以应该是这样的。
那么订阅后会有东西吗?
会打印出swift。
这似乎好像和之前的没有什么差别么?
别急。
我们继续看subject开始的.的另一条属性。
有一个value在里面。
打印这个value,获取的也是一个swift
事实上,当我们要给一个Variable设置新值的时候,要明确访问它的value属性,而不是使用onNext方法。
那么直接给整个代码上上来,你知道打印是什么么?
首先第一个是1-swift是没有错的。
然后就222吗?
其实当改变value的值后,上面的订阅者也重新接收到新的222
打印出 1 - 222
接着才是最后的打印value :222
不知道你理解了没?
最后要说明的一点是,Variable只用来表达一个“响应式”值的语义,因此,它有以下两点性质。
绝不会发生.error事件。
无需手动给它发送.complete事件表示完成。
那么到此,subject的四种机制已经彻底讲完,接下来我们实际去app上看看如何使用呢。