Дополнительный аргумент ‘onError’ при вызове с использованием одного признака RxSwift

#swift #rx-swift

#swift #rx-swift

Вопрос:

Я получаю очень странную ошибку при использовании RxSwift. Я вызываю службу, которая является единственным признаком, и когда я просто печатаю ошибку, мой код компилируется без проблем, но если я попытаюсь сделать что-то еще в «onError», код не компилируется. У кого-то была такая же проблема?

Фрагмент кода, который не компилируется:

 NetworkManager.shared.authorizeService(with: parameters)
            .subscribe(onSuccess: { [weak self] status in

                }, onError: { [weak self] error in
                    paymentAuthorizationFinishedWithError.onNext(APIResponseError.paymentAlreadyInProgress)
            }).disposed(by: bag)
  

Код, который компилирует:

 NetworkManager.shared.authorizeService(with: parameters)
            .subscribe(onSuccess: { [weak self] status in

                }, onError: { [weak self] error in
                    print(error)
            }).disposed(by: bag)
  

введите описание изображения здесь

введите описание изображения здесь

Ответ №1:

Swift complier иногда сильно отстает. Особенно когда дело доходит до Rx. Проблема в этой строке

self.paymentAuthorizationFinishedWithError.onNext(APIResponseError.paymentAlreadyInProgress)

вы забыли добавить, ? поскольку используете weak ссылку: self?.paymentAuthorizationFinishedWithError.onNext(APIResponseError.paymentAlreadyInProgress)