11个库
一系列用于 RxSwift 的阻塞运算符。这些运算符主要用于单元/集成测试,以及一些其他可能有所用处的特殊情况。
例如:
在退出命令行应用程序之前等待可观察序列完成。
许可: 未声明
这是一个为 UITableView 和 UICollectionView 提供反应式数据源的集合。
它允许只用几行代码就创建表格和集合视图的动画数据源。
```swift let data: Observable = ...
let dataSource = RxTableViewSectionedAnimatedDataSource() dataSource.cellFactory = { (tv, ip, i) in let cell = tv.dequeueReusableCell(withIdentifier: "Cell") ?? UITableViewCell(style:.Default, reuseIdentifier: "Cell") cell.textLabel!.text = "(i)" return cell }
// 动画数据 .bind(to: animatedTableView.rx.items(dataSource: dataSource)) .disposed(by: disposeBag)
// 正常重新加载数据 .bind(to: tableView.rx.items(dataSource: dataSource)) .disposed(by: disposeBag) ```
许可: MIT
最简单的 RxSwift 架构。状态+反馈循环。
调试更容易
可以应用于任何级别
system
运算符中)system
运算符)与依赖注入配合使用真好
测试
可以模拟循环依赖
完全将业务逻辑与效果(Rx)分开。
许可: MIT
这是 ReactiveX.io 的 Swift 版本 ReactiveX.io
与原始 Rx 一样,它的目的是使异步操作和事件流的组合变得容易。
它尽量移植了原始 Rx 的概念,但为了更愉快和高效的与 iOS/macOS/Linux 环境集成,一些概念被进行了调整。
对于那些从未听说过 Rx 的人来说,最好的类比可能是
git diff | grep bug | less # Linux 管道 - 程序通过发送字节、单词、行序列进行通信 #
许可: 未声明
Swift
RxTest
为 RxSwift 设置的单元测试扩展。这个库包含模拟调度器、可观测对象和观察者,这些可以使您轻松地为您操作符编写单元测试,就像您对所有内置的 RxSwift 操作符进行单元测试一样。
本库包含您编写以下方式所需的所有内容:```swift func testMap() { let scheduler = TestScheduler(initialClock: 0)}
let xs = scheduler.createHotObservable([
next(150, 1),
next(210, 0),
next(220, 1),
next(230, 2),
next(240, 4),
completed(300)
])
let res = scheduler.start { xs.map { $0 * 2 } }
let correctEvents = [
next(210, 0 * 2),
next(220, 1 * 2),
next(230, 2 * 2),
next(240, 4 * 2),
completed(300)
]
let correctSubscriptions = [
Subscription(200, 300)
]
XCTAssertEqual(res.events, correctEvents)
XCTAssertEqual(xs.subscriptions, correctSubscriptions)
}
```
许可: 未声明
- Swift
RxTests
为 RxSwift 设置的单元测试扩展。这个库包含模拟调度器、可观测对象和观察者,这些可以使您轻松地为您操作符编写单元测试,就像您对所有内置的 RxSwift 操作符进行单元测试一样。
本库包含您编写以下方式所需的所有内容:```swift func testMap() { let scheduler = TestScheduler(initialClock: 0)}
let xs = scheduler.createHotObservable([
next(150, 1),
next(210, 0),
next(220, 1),
next(230, 2),
next(240, 4),
completed(300)
])
let res = scheduler.start { xs.map { $0 * 2 } }
let correctEvents = [
next(210, 0 * 2),
next(220, 1 * 2),
next(230, 2 * 2),
next(240, 4 * 2),
completed(300)
]
let correctSubscriptions = [
Subscription(200, 300)
]
XCTAssertEqual(res.events, correctEvents)
XCTAssertEqual(xs.subscriptions, correctSubscriptions)
}
```
- Swift