微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RxSwift:订阅Observable时的额外参数’onError’

我有以下代码

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

它不编译:调用中的额外参数’onError’.如果我使用onSuccess或onDoesNotExistButShowTheBug而不是onNext,我会得到同样的错误.

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

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

结果:调用外部参数标签’onNext:’.和:

fetcher.fetch()
   .observeOn(MainScheduler.instance)
   .subscribe({ self.store.save(content: $0) })

编译好.

我觉得我得到了错误的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: $0) },onError: { _ in self.view.showError("Error")})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐