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

时间:2018-01-17 12:46:20

标签: swift rx-swift

我有以下代码:

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

它无法编译:{{1​​}}。如果我使用Extra argument 'onError' in callonSuccess代替onDoesNotExistButShowTheBug,我会收到同样的错误。

onNext方法返回fetch()(其最后一个运算符为Observable<String>)。似乎reduce调用只需要一个lambda:

subscribe()

结果:fetcher.fetch() .observeOn(MainScheduler.instance) .subscribe(onNext: { self.store.save(content: $0) }) 。和

Extraneous argument label 'onNext:' in call

编译好。

我觉得我得到了错误的fetcher.fetch() .observeOn(MainScheduler.instance) .subscribe({ self.store.save(content: $0) }) 实施。我想要那个:

subscribe()

但显然,编译器没有。 我正在使用XCode 9.2和Swift 4以及RxSwift 4.1.1。

我的应用程序中有其他部分在可见的可观察区域使用public func subscribe(onNext: ((ElementType) -> Void)? = nil, onError: ((Swift.Error) -> Void)? = nil, onCompleted: (() -> Void)? = nil) -> Disposable { 。我无法理解这次电话的不同之处。

有关如何识别问题根源的想法吗?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

添加我的贡献。

我有同样的问题,但就我而言:

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

函数“ populateView”的值类型与value的值类型不匹配