Rex 0.11.0

Rex 0.11.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布日期上次发布2016年7月
SPM支持 SPM

Bjarke SøndergaardRui Peres维护。



Rex 0.11.0

  • 作者
  • Neil Pankey

Rex 是 ReactiveCocoa 的扩展,它的一些功能可能不适合核心框架。

新开发目标为 RAC 4/Swift 2/Xcode 7。对于 RAC 3 支持,请参阅0.5 版本发布

信号

所有 Signal 运算符都可以通过明确的 lift 对 SignaProducer 也可用。

filterMap

transform 应用到信号的非空结果上,并将返回信号中的值前向传递。这相当于 map { … } .filter { $0 != nil } .map { $0! },但不会创建额外的中间信号。

func filterMap<U>(transform: T -> U?) -> Signal<U, E>
ignoreError

signal 包装在一个版本中,它会丢弃 Error 事件。默认情况下,错误会被替换为 Completed 事件,但也可以指定 Interrupted 作为 replacement

func ignoreError(#replacement: Event<T, NoError> = .Completed) -> Signal<T, NoError>
timeoutAfter

signal 中转发事件,直到它结束或直到 interval 时间过去。这与 RAC 中的 timeoutWithError 几乎相同,但可以用任何终止 event 来进行超时。

func timeoutAfter(interval: NSTimeInterval, withEvent event: Event<T, E>, onScheduler scheduler: DateSchedulerType) -> Signal<T, E>
uncollect

signal 发送的元素批次的发送平铺成每个单独的元素。这是 collect 的逆操作。需要信号值符合 SequenceType

func uncollect() -> Signal<T.Generator.Element, E>

信号生产者

特定于 SignalProducer 的运算符。

groupBy

根据 grouping 返回的键将生产器中的值划分到新的生产器组中。原始生产器上的终止事件被转发到每个内部生产器组。

func groupBy<K: Hashable>(grouping: T -> K) -> SignalProducer<(K, SignalProducer<T, E>), E>

UIKit 扩展

UIButton.rex_pressed

CocoaAction 绑定到按钮按下的一种灵活方式。此外,按钮在 Action 执行期间将被禁用。这种行为对需要一些时间的任务很有用,例如下面示例中的下载过程。

let downloadAction = Action<UIButton, NSData, NSError> { _ in
    let url = NSURL(string: "https://github.com/RACCommunity/Rex/archive/master.zip")
    let request = NSURLRequest(URL: url!)
    return NSURLSession.sharedSession().rac_dataWithRequest(request).map { $0.0 }
}

downloadButton.rex_pressed.value = downloadAction.unsafeCocoaAction

许可证

Rex 是在 MIT 许可证下发布的。