我在Swift 4中使用RxSwift跟随代码
/embed/
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
我收到了构建错误
调用
中的额外参数'onError'
答案 0 :(得分:5)
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)
答案 1 :(得分:5)
对于那些得到OP错误但原因不同的用户,请检查您是否没有使throwing
子句详尽无遗,从而偶然地使了其中一个do-catch
闭包。
另外,请注意不要使用单语句闭包(在这种情况下,您应明确使用return
)。