Skip to content

Instantly share code, notes, and snippets.

@hassanvfx
Last active December 14, 2020 08:06
Show Gist options
  • Save hassanvfx/19a3cd56660da1de5f6d6db40e841979 to your computer and use it in GitHub Desktop.
Save hassanvfx/19a3cd56660da1de5f6d6db40e841979 to your computer and use it in GitHub Desktop.
import UIKit
import RxSwift
import RxCocoa
public class BehaviorDriver<Element>: NSObject {
var behavior: BehaviorRelay<Element>!
var driver: Driver<Element> {
return behavior.asDriver()
}
public init(value: Element) {
behavior = BehaviorRelay<Element>(value: value)
}
public func value()->Element {
return behavior.value
}
public func accept(_ event: Element) {
behavior.accept(event)
}
public func drive(onNext: ((Element) -> Void)? = nil, onCompleted: (() -> Void)? = nil, onDisposed: (() -> Void)? = nil) -> Disposable {
return driver.drive(onNext: onNext, onCompleted: onCompleted, onDisposed: onDisposed)
}
public func drive<Observer>(_ observer: Observer) -> Disposable where Observer : ObserverType, Element == Observer.Element {
return driver.drive(observer)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment