RxOperators
描述
此仓库包含用于 RxSwift 的操作符和一些附加功能。
示例
import UIKit
import RxSwift
import RxCocoa
import RxOperators
final class SomeViewModel {
let title = ValueSubject("Title")
let icon = ValueSubject<UIImage?>(nil)
let color = ValueSubject(UIColor.white)
let bool = ValueSubject(false)
...
}
class ViewController: UIViewController {
@IBOutlet private weak var titleLabel: UILabel!
@IBOutlet private weak var iconView: UIImageView!
@IBOutlet private weak var switchView: UISwitch!
let viewModel = SomeViewModel()
...
private func configureSubscriptions() {
viewModel.title ==> titleLabel.rx.text
viewModel.iconView ==> iconView.rx.image
viewModel.bool <==> switchView.rx.isOn
viewModel.color ==> (self, ViewController.setTint)
//or viewModel.color ==> rx.weak(method: ViewController.setTint)
//or viewModel.color ==> {[weak self] in self?.setTint(color: $0) }
}
private func setTint(color: UIColor) {
...
}
...
}
用法
- 操作符
=>
- 从
ObservableType
到ObserverType
,创建订阅并返回Disposable
let disposable = intObservable => intObserver
- 从
Disposable
到DisposeBag
someDisposable => disposeBag
someObservable => someObserver => disposeBag
- 从
ObservableType
到SchedulerType
,返回Observable<E>
let scheduler = SerialDispatchQueueScheduler(internalSerialQueueName: "Scheduler")
someObservable => scheduler => someObserver => disposeBag
- 操作符
==>
在主队列上驱动 ObservableType
到 ObserverType
并返回 Disposable
intObservable ==> intObserver => disposeBag
-
操作符
<=>
和<==>
为Equatable
序列创建双向订阅 -
操作符
=>>
替代.distinctUntilChanged()
-
DisposableObserverType
和DisposableObservableType
- 协议用于观察者和可观察对象,在解构时对所有订阅进行销毁,因此无需为每个订阅控制销毁。 -
ValueSubject<Element>
- 包含DisposeBag
的Variable<Element>
的类似物。 -
一些功能
skipNil()
操作符- 布尔序列的
or(Bool), .toggle(), !
操作符 - 使用
+
和+=
操作符合并可观察对象,创建处置对象等 interval(...)
withLast() ->
Observable<(previous: Element?, current: Element)>
rx.asDisposeBag
.mp
-@dynamicMemberLookup
映射器asResult() ->
Observable<Result<Element, Error>>
nilIfEmpty
isEmpty
isNil
isNilOrEmpty
wrap(...), guarantee(...)
单独方法,用于从带有完成的函数创建 Singleappend(...)
smooth(...)
方法,用于平滑变化,例如:序列[0, 1]
转换为[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]
onNext, afterNext, onError, afterError, onCompleted, afterCompleted, onSubscribe, onSubscribed, onDispose
包装do(...)
操作符guard()
rx.isFirstResponder
UIStackView().rx.update(...)
UIView().rx.transform.scale(), .rotation(), .translation()
安装
RxOperators 通过 CocoaPods 提供。要安装,请将以下行添加到您的 Podfile 中
pod 'RxOperators'
并在 podfile 目录中首先运行pod update
。
创建一个 Package.swift
文件。
// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "SomeProject",
dependencies: [
.package(url: "https://github.com/dankinsoid/RxOperators.git", from: "2.11.0")
],
targets: [
.target(name: "SomeProject", dependencies: ["RxOperators"])
]
)
$ swift build
作者
Voidilov, [email protected]
许可
RxOperators 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。