RxSwift:订阅 Observable<String> 时的额外参数 'onError'

RxSwift: Extra argument 'onError' when subscribing on an Observable<String>

我有以下代码:

let fetcher = DiagnosticFetcher(commandSender: sender)
fetcher.fetch()
    .observeOn(MainScheduler.instance)
    .subscribe(
       onNext: { self.store.save(content: [=12=]) },
       onError: { self.view.showError("Error") },
       onCompleted: { log.verbose("Diagnostic fetched") })

它没有编译:Extra argument 'onError' in call。如果我使用 onSuccessonDoesNotExistButShowTheBug 而不是 onNext.

,我会得到同样的错误

fetch() 方法 returns a Observable<String>(其最后一个运算符是 reduce)。 subscribe() 调用似乎只需要一个 lambda:

fetcher.fetch()
   .observeOn(MainScheduler.instance)
   .subscribe(onNext: { self.store.save(content: [=13=]) })

结果:Extraneous argument label 'onNext:' in call。并且:

fetcher.fetch()
   .observeOn(MainScheduler.instance)
   .subscribe({ self.store.save(content: [=14=]) })

编译正常。

我觉得我得到了错误的 subscribe() 实现。我想要那个:

public func subscribe(onNext: ((ElementType) -> Void)? = nil,
                      onError: ((Swift.Error) -> Void)? = nil,
                      onCompleted: (() -> Void)? = nil) -> Disposable {

但显然,编译器不会。 我正在使用 XCode 9.2 与 Swift 4 和 RxSwift 4.1.1.

我的应用程序中还有其他部分在其工作的可观察对象上使用 onNext:onError:。我不知道这次通话有什么不同。

关于如何确定问题根源的任何想法?

我通过在 onError lambda 中指定第一个参数来编译它:

fetcher.fetch()
   .observeOn(MainScheduler.instance)
   .subscribe(
      onNext: { self.store.save(content: [=10=]) },
      onError: { _ in self.view.showError("Error")})

添加我的贡献。

我遇到了同样的问题,但就我而言:

recordHeader.albumArray.asObservable()
    .subscribe(onNext: { [weak self] value in
        self?.populateView(recordHeader: value)
    })
    .disposed(by: disposeBag)

函数的值类型 "populateView" 与值

的值类型不匹配