📂
RxSwift
  • RxSwift 中文文档
  • 1. 为什么要使用 RxSwift?
  • 2. 你好 RxSwift!
  • 3. 函数响应式编程
    • 3.1 函数式编程
    • 3.2 函数式编程 -> 函数响应式编程
    • 3.3 数据绑定
  • 4. RxSwift 核心
    • 4.1 Observable - 可监听序列
      • Single
      • Completable
      • Maybe
      • Driver
      • Signal
      • ControlEvent
    • 4.2 Observer - 观察者
      • AnyObserver
      • Binder
    • 4.3 Observable & Observer 既是可监听序列也是观察者
      • AsyncSubject
      • PublishSubject
      • ReplaySubject
      • BehaviorSubject
      • Variable(已弃用)
      • ControlProperty
    • 4.4 Operator - 操作符
    • 4.5 Disposable - 可被清除的资源
    • 4.6 Schedulers - 调度器
    • 4.7 Error Handling - 错误处理
  • 5. 如何选择操作符?
    • amb
    • buffer
    • catchError
    • combineLatest
    • concat
    • concatMap
    • connect
    • create
    • debounce
    • debug
    • deferred
    • delay
    • delaySubscription
    • dematerialize
    • distinctUntilChanged
    • do
    • elementAt
    • empty
    • error
    • filter
    • flatMap
    • flatMapLatest
    • from
    • groupBy
    • ignoreElements
    • interval
    • just
    • map
    • merge
    • materialize
    • never
    • observeOn
    • publish
    • reduce
    • refCount
    • repeatElement
    • replay
    • retry
    • sample
    • scan
    • shareReplay
    • single
    • skip
    • skipUntil
    • skipWhile
    • startWith
    • subscribeOn
    • take
    • takeLast
    • takeUntil
    • takeWhile
    • timeout
    • timer
    • using
    • window
    • withLatestFrom
    • zip
  • 6. 更多示例
    • ImagePicker - 图片选择器
    • TableViewSectionedViewController - 多层级的列表页
    • Calculator - 计算器
  • 7. RxSwift 常用架构
    • 7.1 MVVM
      • Github Signup(示例)
    • 7.2 RxFeedback
      • Github Search(示例)
    • 7.3 ReactorKit
      • Github Search(示例)
  • 8. RxSwift 生态系统
  • 9. 学习资源
  • 10. 关于本文档
    • 10.1 文档更新日志
  • 食谱
    • RxSwift 5 更新了什么?
    • RxRelay
    • 纯函数
    • 附加作用
    • 共享附加作用
Powered by GitBook
On this page
  • 操作
  • 文档更新日志
  • 示例
  • 必备条件
  • 安装
  • 手动
  • CocoaPods
  • Carthage
  • Swift Package Manager
  • 使用 git submodules 手动集成

Was this helpful?

RxSwift 中文文档

Next1. 为什么要使用 RxSwift?

Last updated 4 years ago

Was this helpful?

(简写: Rx) 是一个可以帮助我们简化异步编程的框架。

[RxSwift] 是 的 Swift 版本。

它尝试将原有的一些概念移植到 iOS/macOS 平台。

你可以在这里找到跨平台文档 。

KVO,异步操作 和 流 全部被统一成抽象序列。这就是为什么 Rx 会如此简单,优雅和强大。

操作

加入 QQ 交流群: 871293356

文档更新日志

19年5月21日(RxSwift 5)

  • 引入

  • 更新文档以适配 RxSwift 5

  • 更新 QQ 群号为:871293356

示例

Github 搜索...

定义搜索结果 ...

let searchResults = searchBar.rx.text.orEmpty
    .throttle(0.3, scheduler: MainScheduler.instance)
    .distinctUntilChanged()
    .flatMapLatest { query -> Observable<[Repository]> in
        if query.isEmpty {
            return .just([])
        }
        return searchGitHub(query)
            .catchErrorJustReturn([])
    }
    .observeOn(MainScheduler.instance)

... 然后将结果绑定到 tableview 上

searchResults
    .bind(to: tableView.rx.items(cellIdentifier: "Cell")) {
        (index, repository: Repository, cell) in
        cell.textLabel?.text = repository.name
        cell.detailTextLabel?.text = repository.url
    }
    .disposed(by: disposeBag)

必备条件

  • Xcode 10.2

  • Swift 5.0

安装

安装 RxSwift 不需要任何第三方依赖。

以下是当前支持的安装方法:

手动

打开 Rx.xcworkspace, 选中 RxExample 并且点击运行。 此方法将构建所有内容并运行示例应用程序。

pod --version: 1.3.1 已通过测试

# Podfile
use_frameworks!

target 'YOUR_TARGET_NAME' do
    pod 'RxSwift', '~> 5.0'
    pod 'RxCocoa', '~> 5.0'
end

# RxTests 和 RxBlocking 将在单元/集成测试中起到重要作用
target 'YOUR_TESTING_TARGET' do
    pod 'RxBlocking', '~> 5.0'
    pod 'RxTest', '~> 5.0'
end

替换 YOUR_TARGET_NAME 然后在 Podfile 目录下, 终端输入:

$ pod install

官方支持 0.33 及以上版本。

添加到 Cartfile

github "ReactiveX/RxSwift" ~> 5.0
$ carthage update

如果您希望使用 Carthage 将 [RxSwift] 构建为静态库,在使用 Carthage 构建之前,您可以使用以下脚本手动修改框架类型:

carthage update RxSwift --platform iOS --no-build
sed -i -e 's/MACH_O_TYPE = mh_dylib/MACH_O_TYPE = staticlib/g' Carthage/Checkouts/RxSwift/Rx.xcodeproj/project.pbxproj
carthage build RxAlamofire --platform iOS

创建Package.swift 文件。

// swift-tools-version:5.0

import PackageDescription

let package = Package(
  name: "RxTestProject",
  dependencies: [
    .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "5.0.0")
  ],
  targets: [
    .target(name: "RxTestProject", dependencies: ["RxSwift", "RxCocoa"])
  ]
)
$ swift build

如果构建或测试一个模块对 RxTest 存在依赖, 设置 TEST=1.

$ TEST=1 swift test

使用 git 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]

对于 Xcode 10.1 以下版本,请使用 。

作为静态库。

[RxSwift]:

RxSwift 4.5
CocoaPods
Carthage
Carthage
Swift Package Manager
https://github.com/ReactiveX/RxSwift
ReactiveX
Rx
ReactiveX.io
RxSwift
下载文档电子书
RxSwift 5 更新了什么?
食谱章节
Signal
RxRelay
纯函数
附加作用
共享附加作用
查看更多...
platforms
pod
Travis CI
Carthage compatible
Swift Package Manager compatible