- 文档更新日志
- 18年2月15日
- 示例
- 必备条件
- 安装
- 手动
- CocoaPods
- Carthage
- Swift Package Manager
- 使用 submodules 手动集成
RxSwift: ReactiveX for Swift

ReactiveX(简写: Rx) 是一个可以帮助我们简化异步编程的框架。
它拓展了观察者模式。使你能够自由组合多个异步事件,而不需要去关心线程,同步,线程安全,并发数据以及I/O阻塞。
RxSwift 是 Rx 的 Swift 版本。
它尝试将原有的一些概念移植到 iOS/macOS 平台。
你可以在这里找到跨平台文档 ReactiveX.io。
RxSwift QQ 交流群: 424180219
文档更新日志
18年2月15日
- 纠正错别字
- 给 retry 操作符加入演示代码
- 给 replay 操作符加入演示代码
- 给 connect 操作符加入演示代码
- 给 publish 操作符加入演示代码
- 给 reduce 操作符加入演示代码
- 给 skipUntil 操作符加入演示代码
- 给 skipWhile 操作符加入演示代码
给 skip 操作符加入演示代码
… 点击查看更多
示例
Github 搜索…

定义搜索结果 …
let searchResults = searchBar.rx.text.orEmpty.throttle(0.3, scheduler: MainScheduler.instance).distinctUntilChanged().flatMapLatest { query -> Observable<[Repository]> inif query.isEmpty {return .just([])}return searchGitHub(query).catchErrorJustReturn([])}.observeOn(MainScheduler.instance)
… 然后将结果绑定到 tableview 上
searchResults.bind(to: tableView.rx.items(cellIdentifier: "Cell")) {(index, repository: Repository, cell) incell.textLabel?.text = repository.namecell.detailTextLabel?.text = repository.url}.disposed(by: disposeBag)
必备条件
- Xcode 9.0
- Swift 4.0
- Swift 3.x (使用
rxswift-3.0分支) - Swift 2.3 (使用
rxswift-2.0分支)
安装
安装 RxSwift 不需要任何第三方依赖。
以下是当前支持的安装方法:
手动
打开 Rx.xcworkspace, 选中 RxExample 并且点击运行。 此方法将构建所有内容并运行示例应用程序。
CocoaPods
pod --version: 1.3.1 已通过测试
# Podfileuse_frameworks!target 'YOUR_TARGET_NAME' dopod 'RxSwift', '~> 4.0'pod 'RxCocoa', '~> 4.0'end# RxTests 和 RxBlocking 将在单元/集成测试中起到重要作用target 'YOUR_TESTING_TARGET' dopod 'RxBlocking', '~> 4.0'pod 'RxTest', '~> 4.0'end
替换 YOUR_TARGET_NAME 然后在 Podfile 目录下, 终端输入:
$ pod install
Carthage
carthage version: 0.26.2 已通过测试
添加到 Cartfile
github "ReactiveX/RxSwift" ~> 4.0
$ carthage update
Swift Package Manager
swift build --version: Swift 4.0.0-dev (swiftpm-13126) 已通过测试
创建Package.swift 文件。
// swift-tools-version:4.0import PackageDescriptionlet package = Package(name: "RxTestProject",dependencies: [.package(url: "https://github.com/ReactiveX/RxSwift.git", "4.0.0" ..< "5.0.0")],targets: [.target(name: "RxTestProject", dependencies: ["RxSwift", "RxCocoa"])])
$ swift build
如果构建或测试一个模块对 RxTest 存在依赖, 设置 TEST=1. (RxSwift >= 3.4.2)
$ TEST=1 swift test
使用 submodules 手动集成
- 添加 RxSwift 作为子模块
$ git submodule add git@github.com:ReactiveX/RxSwift.git
- 拖拽
Rx.xcodeproj到项目中 - 前往
Project > Targets > Build Phases > Link Binary With Libraries, 点击+并且选中RxSwift-[Platform]和RxCocoa-[Platform]
