【问题标题】:RxSwift: Extra argument 'onError' in callRxSwift:调用中的额外参数“onError”
【发布时间】: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”

【问题讨论】:

    标签: swift observable rx-swift maybe


    【解决方案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)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-27
        • 1970-01-01
        相关资源
        最近更新 更多