Swift Combine: как создать кастомную мойку? - PullRequest
1 голос
/ 09 октября 2019

Я использую 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?

1 Ответ

0 голосов
/ 12 октября 2019

Он встроен. Вам не нужно создавать привязку ... Просто сделайте:

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