RxAtomic 4.4.2

RxAtomic 4.4.2

Krunoslav Zaher 维护。



RxAtomic 4.4.2

  • Krunoslav Zaher

Miss Electric Eel 2016 RxSwift: Swift 的 ReactiveX

Travis CI platforms pod Carthage compatible Swift Package Manager compatible

Rx 是通过 Observable 接口表达的计算泛型抽象。

这是 Rx 的 Swift 版本。

它试图尽可能地将原始版本中的概念迁移过来,但为了更好地与 iOS/macOS 环境整合,一些概念进行了适应。

可以在 ReactiveX.io 找到跨平台的文档。

和原始 Rx 一样,它的目的是使异步操作和事件/数据流易于组合。

观察者的 KVO、异步操作和流都被统一在了 序列抽象 下。这就是 Rx 简单、优雅和强大的原因。

我来到这里是因为我想 ...

... 理解
... 安装
  • 将 RxSwift/RxCocoa 集成到我的应用程序中。 安装指南
... 变通处理
... 交互
... 比较
... 从 RxSwiftCommunity 查找兼容
...查看更广泛的视野
  • 这在Android中存在吗? RxJava
  • 这一切都往哪里发展,未来会怎样,关于反应式架构,您会如何设计整个应用程序? Cycle.js - 这是javascript,但 RxJS 是Rx的javascript版本。

用法

这是示例 在行动中
定义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)
...然后绑定结果到你的表格视图
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)

需求

安装

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 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.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-[平台]目标

参考