使用 RXSwift Single Trait 的调用中的额外参数 'onError'

Extra argument 'onError' in call using RXSwift Single Trait

我在使用 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)

Swift 编译器有时会很慢。特别是涉及到 Rx 时。问题出在这一行

self.paymentAuthorizationFinishedWithError.onNext(APIResponseError.paymentAlreadyInProgress)

您忘记添加 ? 因为您使用的是 weak 参考: self?.paymentAuthorizationFinishedWithError.onNext(APIResponseError.paymentAlreadyInProgress)