Reputation: 17329
I'm using RxSwift with something like the following
extension Reactive where Base: UIViewController {
public var showError: Binder<Error> {
return Binder(self.base) { element, error in
let alertVC = // create UIAlertController with error
element.present(alertVC, animated: true)
}
}
What's the best way to build something like this with Swift Combine?
Upvotes: 3
Views: 801
Reputation: 33967
It's built in. You don't need to make a Bindable... Just do:
cancelable = publisher.assign(to: \.title, on: barButtonItem)
In answer to your edited question:
extension UIViewController {
var showError: Subscribers.Sink<Error, Never> {
return Subscribers.Sink<Error, Never>(
receiveCompletion: { _ in },
receiveValue: { [unowned self] error in
let alertVC = UIAlertController(title: "Error", message: error.localizedDescription, preferredStyle: .alert)
self.present(alertVC, animated: true)
}
)
}
}
Upvotes: 2