gpt4 book ai didi

swift - Rx swift : Extra argument 'onError' when subscribing on an Observable

转载 作者:搜寻专家 更新时间:2023-10-30 22:36:58 25 4
gpt4 key购买 nike

我有以下代码:

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

它不编译:Extra argument 'onError' in call .如果我使用 onSuccess,我会得到同样的错误或 onDoesNotExistButShowTheBug而不是 onNext .

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

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()执行。我想要那个:

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

关于swift - Rx swift : Extra argument 'onError' when subscribing on an Observable<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48301533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com