RxSwift で最新バージョンの Moya を使用していますが、現時点では解決策が見つからない論理的な問題に遭遇しました。
次のインターフェイスを実装する ViewModel を持つ UITableViewController があるとします。
protocol ListViewModelType {
var items: Observable<[Item]> { get }
}
items
プロパティは (EVReflection を使用して) 次のように実装されます。
var items: Observable<[Therapy]> {
get {
let provider = RxMoyaProvider<ItemService>()
return provider
.request(.all)
.map(toArray: Item.self)
}
}
UITableViewController の viewDidLoad メソッドで、次のコードを使用して items プロパティと tableView の間のバインディングを設定しました。
self.viewModel.items
.bind(to: tableView.rx.items(cellIdentifier: cellIdentifier, cellType: cellType)) { row, element, cell in
// cell configuration code
}
.disposed(by: self.disposeBag)
ここで、UITableView のコンテンツを更新して、ユーザーがアプリの他の部分で行った変更を反映したいと思います。RxMoyaProvider が Observable を返すことを考えると、これは Observable によって発行された別の値を介して簡単に実行できるはずですが、サーバーからコンテンツを更新して同じ Observable に入れる必要があることをプロバイダーに伝える方法がわかりません。
ここで何か不足していますか?UITableView を RxMoyaProvider からのオブジェクトのリストにバインドするためのより推奨される方法はありますか?