Shai Mishali

17个pods

CombineExt

许可证: MIT

区分器

UITableView和UICollectionView的差分算法。RxDataSources由区分器驱动。

许可证: MIT

  • Swift

RxBlocking

为RxSwift提供一系列阻塞操作符。这些操作符主要用于单元/集成测试和一些可能很有用的特殊场景。

例如

在退出命令行应用前等待可观察序列完成。

许可证: NOASSERTION

  • Swift

RxCocoa

  • UI扩展
  • NSURL扩展
  • KVO扩展

许可证: NOASSERTION

  • Swift

RxCombine

许可证: MIT

RxCoreMotion

这是一个Rx扩展,提供了一种简单直接的方式来使用Apple iOS CoreMotion响应作为Observables。

许可证: MIT

  • Swift

RxDataSources

这是一个为UITableView和UICollectionView提供反应式数据源的集合。

它允许在几行代码中创建表格和集合视图的动画数据源。

```swift let data: Observable = ...

let dataSource = RxTableViewSectionedAnimatedDataSource() dataSource.cellFactory = { (tv, ip, i) in let cell = tv.dequeueReusableCell(withIdentifier: "Cell") ?? UITableViewCell(style:.Default, reuseIdentifier: "Cell") cell.textLabel!.text = "(i)" return cell }

// 动画数据 .bind(to: animatedTableView.rx.items(dataSource: dataSource)) .disposed(by: disposeBag)

// 正常重新加载数据 .bind(to: tableView.rx.items(dataSource: dataSource)) .disposed(by: disposeBag) ```

许可证: MIT

  • Swift

RxFeedback

最简单的RxSwift架构。状态 + 反馈循环。

  • 简单
    • 如果系统没有状态 -> 恭喜,你是拥有一个纯函数或者一个可观察序列
    • 如果系统中确实有状态,那么这里是:)
    • 与该状态的交互本质上是一个反馈循环。
    • => 这只是状态 + CQRS
  • 直观
    • 如果它是状态 -> 状态
    • 如果它是一种修改状态的方式 -> 事件/命令
    • 如果它是一个效果 -> 将其编码到状态的一部分中,然后设计一个反馈循环
  • 声明式
    • 系统行为首先通过声明性指定,效果则在调用subscribe之后开始 => 编译时可以证明没有“未处理的状态”
  • 调试更简单

    • 很多逻辑只是可以使用Xcode调试器调试的标准纯函数,或者只是打印命令。
  • 可以在任何级别应用

    • 整个系统
    • 应用程序(状态存储在数据库、CoreData、Firebase、Realm中)
    • 视图控制器(状态存储在system操作器中)
    • 在反馈循环内(反馈循环中的另一个system操作器)
  • 与依赖注入一起工作得很好

  • 测试

    • Reducer是一个纯函数,只需调用它并断言结果
    • 如果正在测试效果 -> TestScheduler
  • 可以建模循环依赖

  • 完全将业务逻辑与效果(Rx)分开

    • 业务逻辑可以在不同平台之间转换(ShiftJS、C++、J2ObjC)

许可证: MIT

  • Swift

RxMediaPicker

围绕UIImagePickerController构建的反应式包装器。

许可证: MIT

  • Swift

RxRelay

因为观察者设计模式是每个开发人员都应该知道的内容。它促进了对象之间的通信并简化了应用程序的逻辑。以反应式方式实现它将把它提升到一个全新的水平。

许可证: NOASSERTION

  • Swift

RxStarscream

一个用于订阅Starscream WebSocket事件的轻量级扩展。

许可证: Apache-2.0

  • Swift

RxSwift

这是ReactiveX.io的Swift版本。

与原始Rx一样,它的目的是实现异步操作和事件流的轻松组合。

它尽可能地移植了原始Rx中的概念,但某些概念为了与iOS/macOS/Linux环境更好地集成而进行了调整。

对于那些从未听说过Rx的人来说,最好的类比可能是

git diff | grep bug | less # Linux管道 - 通过发送一系列字节、单词、行来相互通信

许可证: NOASSERTION

  • Swift

RxTest

RxSwift的单元测试扩展。这个库包含了模拟调度器、可观察对象和观察者,可以让你轻松地对RxSwift的内置操作符进行单元测试。

这个库包含了你需要的所有东西来以以下方式编写单元测试:```swift func testMap() { let scheduler = TestScheduler(initialClock: 0)

let xs = scheduler.createHotObservable([
    next(150, 1),
    next(210, 0),
    next(220, 1),
    next(230, 2),
    next(240, 4),
    completed(300)
    ])

let res = scheduler.start { xs.map { $0 * 2 } }

let correctEvents = [
    next(210, 0 * 2),
    next(220, 1 * 2),
    next(230, 2 * 2),
    next(240, 4 * 2),
    completed(300)
]

let correctSubscriptions = [
    Subscription(200, 300)
]

XCTAssertEqual(res.events, correctEvents)
XCTAssertEqual(xs.subscriptions, correctSubscriptions)

} ```

许可证: NOASSERTION

  • Swift

RxTests

RxSwift的单元测试扩展。这个库包含了模拟调度器、可观察对象和观察者,可以让你轻松地对RxSwift的内置操作符进行单元测试。

这个库包含了你需要的所有东西来以以下方式编写单元测试:```swift func testMap() { let scheduler = TestScheduler(initialClock: 0)

let xs = scheduler.createHotObservable([
    next(150, 1),
    next(210, 0),
    next(220, 1),
    next(230, 2),
    next(240, 4),
    completed(300)
    ])

let res = scheduler.start { xs.map { $0 * 2 } }

let correctEvents = [
    next(210, 0 * 2),
    next(220, 1 * 2),
    next(230, 2 * 2),
    next(240, 4 * 2),
    completed(300)
]

let correctSubscriptions = [
    Subscription(200, 300)
]

XCTAssertEqual(res.events, correctEvents)
XCTAssertEqual(xs.subscriptions, correctSubscriptions)

} ```

许可证:

  • Swift

RxViewModel

RxViewModelMVVMRx 扩展的结合体

由于 ReactiveViewModel 项目陷入了停滞,并且没有找到 SwiftSwift 2.0 的实现,我们发现有必要在 Swift 中实现类似的功能。

鉴于没有 Swift 分支,并且对项目的兴趣不高,我们认为给 RxSwift/RxCocoa 一次机会,并把它作为构建此响应式视图模型方法的基石会更好。

简而言之:一个基于 RxCocoa 的对 ReactiveViewModel 的明显“模仿”。

许可证: MIT

  • Swift

SMWebView

SMWebView 是 UIWebView 的一个令人愉快的轻量级 Swift 包装器,它让你可以利用闭包和链式调用的力量。当然 - 摆脱那些讨厌、糟糕的代理吧 ;-)

许可证: MIT

  • Swift

UIView+Positioning

UIView+Positioning 提供了简短的方法和助手,以便轻松地为任何基于 UIView 的对象定义框架属性。

许可证: MIT

  • Swift