ReactiveX (简写: Rx) 是一个可以帮助我们简化异步编程的框架。
[RxSwift] 是 Rx 的 Swift 版本。
它尝试将原有的一些概念移植到 iOS/macOS 平台。
你可以在这里找到跨平台文档 ReactiveX.io 。
KVO,异步操作 和 流 全部被统一成抽象序列。这就是为什么 Rx 会如此简单,优雅和强大。
操作
加入 RxSwift QQ 交流群: 871293356
下载文档电子书
文档更新日志
19年5月21日(RxSwift 5)
示例
Github 搜索...
定义搜索结果 ...
Copy 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 上
Copy 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.1 以下版本,请使用 RxSwift 4.5 。
安装
安装 RxSwift 不需要任何第三方依赖。
以下是当前支持的安装方法:
手动
打开 Rx.xcworkspace, 选中 RxExample
并且点击运行。 此方法将构建所有内容并运行示例应用程序。
pod --version
: 1.3.1
已通过测试
Copy # 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
目录下, 终端输入:
官方支持 0.33 及以上版本。
添加到 Cartfile
Copy github "ReactiveX/RxSwift" ~> 5.0
Carthage 作为静态库。
如果您希望使用 Carthage 将 [RxSwift] 构建为静态库,在使用 Carthage 构建之前,您可以使用以下脚本手动修改框架类型:
Copy 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
文件。
Copy // 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" ] )
]
)
如果构建或测试一个模块对 RxTest 存在依赖, 设置 TEST=1
.
使用 git submodules 手动集成
Copy $ git submodule add git@github.com:ReactiveX/RxSwift.git
前往 Project > Targets > Build Phases > Link Binary With Libraries
, 点击 +
并且选中 RxSwift-[Platform]
和 RxCocoa-[Platform]
[RxSwift]:https://github.com/ReactiveX/RxSwift