我正在使用最新版本的 Moya 和 RxSwift,我遇到了一个逻辑问题,目前我找不到解决方案。
假设我有一个带有 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 的对象列表?