RxSwift: Swift 的 ReactiveX
- RxSwift 3.x / Swift 3.x 可在 rxswift-3.0 分支 中找到。
Rx 是通过 Observable 接口表达的计算泛型抽象。
这是 Rx 的 Swift 版本。
它试图尽可能地将原始版本中的概念迁移过来,但为了更好地与 iOS/macOS 环境整合,一些概念进行了适应。
可以在 ReactiveX.io 找到跨平台的文档。
和原始 Rx 一样,它的目的是使异步操作和事件/数据流易于组合。
观察者的 KVO、异步操作和流都被统一在了 序列抽象 下。这就是 Rx 简单、优雅和强大的原因。
我来到这里是因为我想 ...
... 理解
- 为什么使用 Rx?
- 基础知识,开始使用 RxSwift
- 特质 -
Single、Completable、Maybe、Driver和ControlProperty是什么,为什么它们存在? - 测试
- 技巧和常见错误
- 调试
- Rx 背后的数学
- 什么是热和冷的可观察序列?
... 安装
- 将 RxSwift/RxCocoa 集成到我的应用程序中。 安装指南
... 变通处理
... 交互
- 这一切都很棒,但是与使用 RxSwift 的人交流并且交换经验会更好。
加入 Slack 通道
- 使用库报告问题。 使用错误模板创建问题
- 请求新功能。 使用功能请求模板创建问题
- 提供帮助 查看贡献指南
... 比较
- 其他库.
... 从 RxSwiftCommunity 查找兼容
...查看更广泛的视野
- 这在Android中存在吗? RxJava
- 这一切都往哪里发展,未来会怎样,关于反应式架构,您会如何设计整个应用程序? Cycle.js - 这是javascript,但 RxJS 是Rx的javascript版本。
用法
需求
- Xcode 9.0
- Swift 4.0
- Swift 3.x (使用
rxswift-3.0分支 代替) - Swift 2.3 (使用
rxswift-2.0分支 代替)
安装
Rx不包含任何外部依赖。
目前支持以下选项
手册
打开Rx.xcworkspace,选择 RxExample 并运行。此方法将构建所有内容并运行示例应用程序
CocoaPods
通过pod --version测试: 1.3.1
# Podfile
use_frameworks!
target 'YOUR_TARGET_NAME' do
pod 'RxSwift', '~> 4.0'
pod 'RxCocoa', '~> 4.0'
end
# RxTest and RxBlocking make the most sense in the context of unit/integration tests
target 'YOUR_TESTING_TARGET' do
pod 'RxBlocking', '~> 4.0'
pod 'RxTest', '~> 4.0'
end替换YOUR_TARGET_NAME,然后在Podfile目录中,输入:
$ pod installCarthage
通过carthage version测试: 0.26.2
将以下内容添加到Cartfile
github "ReactiveX/RxSwift" ~> 4.0
$ carthage updateSwift Package Manager
通过swift build --version测试: Swift 4.0.0-dev (swiftpm-13126)
创建一个Package.swift文件。
// swift-tools-version:4.0
import PackageDescription
let 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手动使用git子模块
- 将RxSwift作为子模块添加
$ git submodule add [email protected]:ReactiveX/RxSwift.git- 将
Rx.xcodeproj拖入到项目导航器 - 转到
项目 > 目标 > 构建阶段 > 与库链接,点击+并选择RxSwift-[平台]和RxCocoa-[平台]目标
参考
- https://reactivex.fullstack.org.cn/
- Reactive Extensions GitHub (GitHub)
- RxSwift RayWenderlich.com 书籍
- Boxue.io RxSwift 在线课程(中文)
🇨🇳 ) - Erik Meijer (维基百科)
- Expert to Expert: Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx) (视频)
- Reactive Programming Overview (Netflix的Jafar Husain)
- Subject/Observer is Dual to Iterator (论文)
- Rx标准序列运算符可视化(可视化工具)
- Haskell
