RxSwift的基础
Xcode入门
创建一个新的Single-View Application项目,然后打开ViewController.swift 。 我们将在viewDidLoad中添加一个属性和一些代码。 使用CocoaPods或其他软件包管理器将框架添加到项目中后,请确保导入RxSwift 。
数据存在的地方
变数
在这里,我们创建了一个属性,该属性将为我们的开关保留一个布尔值 。 我们使用一个变量 ,其通用值Bool分配为true作为默认值。 要访问或更改布尔值,我们必须使用viewDidLoad中所示的变量的value属性。
可观察的
从名为switchState的变量中 ,我们可以创建一个可观察的对象。 一个Observable侦听状态以更改为新值或相同值(或事件)。 让我们看看接下来可以使用Observable做什么:
过滤
当我们使用。 对我们的可观察对象进行过滤 ,我们给它传递一个闭包,如果闭包返回false,则可观察对象将忽略此事件。
地图
使用 。 map将允许我们将Bool转换为所需的任何类型。 在这种情况下,我们将Bool映射到一个更好地表示我们状态的字符串 。 也许现在我们可以在标签上向用户显示此字符串 。
到目前为止我们所拥有的
在viewDidLoad中 ,我们创建一个observable,并应用一个filter , distingtUntilChanged和map操作来获取titledObservable的最终observable。 由于我们只需要一个可观察的对象,因此我们可以将代码重构为如下所示:
链接每个操作可以使我们更加简洁。
聆听数据更改
订阅可观察的
在我们的viewDidLoad中 ,添加以下内容。 这是我们侦听可观察事件以发送事件的方式。 在我们的案例中,我们正在监听switchObservable的更改,因此我们可以将labelToday.text更新为newValue 。
订阅可观察对象时,您可以收听不同的事件。 但是,这里我们正在监听onNext事件。
处理袋
处理袋用于将类似ARC的行为返回给RX。 当DisposeBag被释放时,它将在每个添加的一次性物品上调用dispose。
每当您订阅可观察对象时,此订阅方法都会返回Disposable对象。 这对内存管理很重要。 那么,您如何处理一次性用品? 查看以下代码:
在我们的ViewController中 ,我们添加了一个新属性var bag = DisposeBag() 。 然后,在调用.subscribe(onNext :)之后 ,我们再链接另一个方法.disposed(by 🙂并传入我们的bag属性。 而已! 因此,当ViewController从内存中删除时, 包中的Disposables也将删除。
处置袋有助于防止保留周期和内存泄漏。 因此,当您订阅任何可观察物时,请使用它们。
想了解更多? 请从Ray Wenderlich查看本文。 它包括一个入门项目,以及有关如何将不具有Reactive组件的应用程序带入RxSwift的详细步骤。