RxSwift:调用中的额外参数“onError”

Posted

技术标签:

【中文标题】RxSwift:调用中的额外参数“onError”【英文标题】:RxSwift: Extra argument 'onError' in call 【发布时间】:2017-11-11 02:20:40 【问题描述】:

我在带有 RxSwift 的 Swift 4 中有以下代码

worthReacting.flatMap (userSearch) in
        translator.getTranslation(ofWord: userSearch)
        .subscribe(
            onSuccess: (dataModel) in
                state.value = .translation(word: dataModel.definition,
                                           translations: dataModel.translations)
        ,
            onError: (error) in
                state.value = .networkError
        ,
            onCompleted: 
                state.value = .unknownWord
        ).disposed(by: disposeBag)

worthReacting 的类型为 Observable<String>translator.getTranslation 返回 Maybe<DataModel>

我收到构建错误

调用中的额外参数“onError”

【问题讨论】:

【参考方案1】:

Maybe 平面映射到 Observable 生成 ObservableObservable 不能发出 onSuccess 事件,而是会发出 onNext。以下代码将起作用:

worthReacting.flatMap (userSearch) in
        translator.getTranslation(ofWord: userSearch)
        .subscribe(
            onNext: (dataModel) in
                self.state.value = .translation(word: dataModel.definition,
                                           translations: dataModel.translations)
        ,
            onError: (error) in
                self.state.value = .networkError
        ,
            onCompleted: 
                self.state.value = .unknownWord
        ).disposed(by: disposeBag)

【讨论】:

【参考方案2】:

对于那些收到 OP 错误但有不同原因的人,请检查您是否没有通过不使您的 do-catch 子句详尽无遗而偶然使您的闭包 throwing 之一。

另外,请注意不要使用单语句闭包(在这种情况下,您应该明确地return)。

【讨论】:

以上是关于RxSwift:调用中的额外参数“onError”的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift - onError 发出两次

RxSwift: 链 Completable 到 Observable

使用 Moya + RxSwift 处理自定义错误响应

未调用 Rxswift Map 和 Zip

MKPolygon 初始化错误“调用中的参数“interiorPolygons”缺少参数”/“调用中的额外参数”

swift2:调用中的额外参数“错误”