RxSwift:Swift 中的 ReactiveX
关于 Rx
Rx 是通过 Observable< Element >
接口表达的计算泛型抽象。
这是 Rx 的 Swift 版本。
它试图尽可能多地移植原始版本中的概念,但一些概念为了更好地与 iOS/OSX 环境集成而被适配。
跨平台文档可以在 ReactiveX.io 上找到。
与原始 Rx 一样,其目的是使异步操作和事件/数据流易于组合。
KVO 观察、异步操作和流程都被统一在 序列抽象 下。这也是为什么 Rx 如此简单、优雅、强大的原因。
我来到这里是因为我想...
...理解
- 为什么使用Rx?
- RxSwift的基本知识,入门
- 单元 -
Driver
、ControlProperty
和Variable
是什么?它们为什么存在? - 测试
- 技巧和常见错误
- 调试
- Rx背后的数学原理
- 什么是热和冷的可观察序列?
- 公共API看起来像什么?
...安装
- 将RxSwift/RxCocoa集成到我的应用程序中。 安装指南
...绕过
- 在示例应用程序中。 运行示例应用程序
- 在Playgrounds中使用操作符。 Playgrounds
...交互
- 这些都很好,但是与使用RxSwift的其他人交谈并交流经验会更棒。
加入Slack频道 - 使用库报告问题。 使用错误模板打开问题
- 请求新功能。 使用功能请求模板打开问题
... 比较
- 与其他库.
... 查找兼容
- 的库来自 RxSwiftCommunity。
- 使用RxSwift的Pods.
... 看看更广泛的视角
- 这在Android中存在吗? RxJava
- 这一切都将何去何从,未来是什么,关于响应式架构,如何以这种方式设计整个应用程序? Cycle.js - 这是JavaScript,但 RxJS 是Rx的JavaScript版本。
用法
要求
- Xcode 8.0
- Swift 3.0
安装
Rx不包含任何外部依赖。
这些是目前支持的选项
手册
打开 Rx.xcworkspace,选择 RxExample
并运行。此方法将构建一切并运行示例应用程序
CocoaPods
# Podfile
use_frameworks!
target 'YOUR_TARGET_NAME' do
pod 'RxSwift', '~> 3.0.0-beta.2'
pod 'RxCocoa', '~> 3.0.0-beta.2'
end
# RxTests and RxBlocking make the most sense in the context of unit/integration tests
target 'YOUR_TESTING_TARGET' do
pod 'RxBlocking', '~> 3.0.0-beta.2'
pod 'RxTests', '~> 3.0.0-beta.2'
end
替换 YOUR_TARGET_NAME
,然后在 Podfile
目录中,输入
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.0'
config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '10.10'
end
end
end
$ pod install
Carthage
将其添加到 Cartfile
github "ReactiveX/RxSwift" "3.0.0-beta.2"
$ carthage update
手动使用 git 子模块
- 将 RxSwift 作为子模块添加
$ git submodule add [email protected]:ReactiveX/RxSwift.git
- 将
Rx.xcodeproj
拖放到项目导航器 - 转到
项目 > 目标 > 构建阶段 > 链接二进制库
,点击+
并选择RxSwift-[平台]
和RxCocoa-[平台]
目标
参考
- http://reactivex.io/
- Reactive Extensions GitHub (GitHub)
- Erik Meijer (维基百科)
- Expert to Expert: Brian Beckman 和 Erik Meijer - Inside the .NET Reactive Framework (Rx) (视频)
- Reactive Programming Overview (Netflix 的 Jafar Husain)
- Subject/Observer is Dual to Iterator (论文)
- Rx standard sequence operators visualized (可视化工具)
- Haskell