如何使用RxSwift将两个observable合并到另一个observable? 就我而言:
<select id="Test1">
<option value="test">Role1</option>
<option value="test">Role2</option>
<option value="test">Role3</option>
<option value="test">Role4</option>
</select>
@Html.DisplayFor(Test1)
但是xcode构建失败的原因是:
无法转换类型的值'(AssetMediaType,) - &gt;可观察到的百分比抑制率数据MediaAsset] GT;”期望参数类型'(,_) - &gt; _'
答案 0 :(得分:0)
如果你想让他们同时开火你需要使用Zip
let zipped = Observalbe.zip(a, b){$0}
或在您的代码中
struct ViewModel {
let items: Observable<[MediaAsset]>
init(type: Observable<AssetMediaType>, provider: DataProvider) {
items = Observable.zip(type, provider.rx.didAuthorize){$0}
}
答案 1 :(得分:0)
您的类型不匹配。
假设这些函数属于DataProvider.rx,而不是ViewModel,此代码:
Observable.combineLatest(type, provider.rx.didAuthorize, resultSelector: { (type, status) in
return provider.rx.fetchMedia(type)
})
返回一个Observable&lt;可观察到的百分比抑制率数据ViewModel.MediaAsset] GT;&GT;
但您将项目声明为Observable&lt; [MediaAsset]&gt;
items = Observable.combineLatest(type, provider.didAuthorize) { type,status in
return (type,status)
}
.flatMapLatest { type,status in
return provider.fetchMedia(type)
}
注意:目前还不清楚你是如何使用状态的。我将它传递给flatMapLatest,但不会再传递它。