Swift Combine: как создать собственную раковину?

Я использую RxSwift примерно со следующим

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)
        }
    }

Как лучше всего построить что-то подобное с помощью Swift Combine?


person swalkner    schedule 09.10.2019    source источник


Ответы (1)


Он встроен. Вам не нужно делать Bindable ... Просто выполните:

cancelable = publisher.assign(to: \.title, on: barButtonItem)

В ответ на ваш отредактированный вопрос:

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)
            }
        )
    }
}
person Daniel T.    schedule 12.10.2019
comment
хорошо, это был довольно плохой пример ???? Я отредактировал свой пост - я хотел бы сделать что-нибудь нестандартное - person swalkner; 14.10.2019
comment
Новый вопрос, новый ответ. - person Daniel T.; 14.10.2019