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
生成 Observable
。 Observable
不能发出 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: 链 Completable 到 Observable