RACCommander 0.0.8

RACCommander 0.0.8

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2016年1月
SPM支持 SPM

Pedro Piñera 维护。



  • 作者:
  • @pepibumur

ReactiveCommander

image

要求

安装

CocoaPods

您可以通过将以下行添加到您的 Podfile 中来安装 ReactiveCommander:

use_frameworks!
pod "RXCommander" // For RxSwift
pod "RACCommander" // For ReactiveCocoa

您可以在任何需要使用该框架的地方使用 import ReactiveCommander 来导入它。

Carthage

使用 Carthage 也可以安装

github "SwiftReactive/ReactiveCommander"

根据您想要使用的框架(ReactiveCocoaRxSwift),您需要在项目中添加相应的框架,分别是 RACCommanderRXCommander。然后使用这些名字导入它们。

支持的最低版本

  • tvOS - 9.0
  • iOS - 8.0
  • OSX - 10.10
  • watchOS - 2.1

贡献

  • 克隆代码库: git clone https://github.com/swiftreactive/ReactiveCommander
  • 安装 Carthage: brew install carthage
  • 更新 Carthage 依赖项: carthage update
  • 打开项目 ReactiveCommander.xcodeproj

组件

ReactiveCommander 使用 NSOperationQueue 和响应式方法实现了 编程命令模式。该模式的想法是将操作封装在通过提供执行动作所需的参数来初始化的 command 中。这些命令可以排队,队列将管理这些命令的线程、并发和执行。

命令

  • 命令:默认泛型命令,其中 T 是返回类型。在之前使用之前,必须重写该命令以实现 public func action() throws -> T 方法。

命令队列

  • 可以在 CommandQueue 中排队 Commands,它是 NSOperationQueue 的子类,具有新的方法

    // ReactiveCocoa
    func addCommand<T, E: ErrorType>(cmd: Command<T, E>) -> SignalProducer<T, E>
    
    // RxSwift
    public func addCommand<T>(cmd: Command<T>) -> Observable<T>

    SignalProducer 开始或 Observable 获得订阅者时,命令将被添加到队列中以执行。

  • CommandQueue提供了一个单例实例,可以通过CommandQueue.backgroundQueue访问。如果您想使用自己的NSOperationQueue配置实现自己的队列,可以简单地继承此类。
  • ReactiveCommander为与CommandCommandQueue一起使用提供了自定义运算符。
    • let disposable = queue <~ command - 将命令入队并返回可丢弃对象。

备注

  • Command的操作必须是同步的。异步由队列处理。
  • Command必须表示独立的操作,应避免它们之间的复杂关系。

许可证

ReactiveCommander可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。