测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布日期上次发布 | 2016年7月 |
SPM支持 SPM | ✗ |
由Bjarke Søndergaard、Rui Peres维护。
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>
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 许可证下发布的。