在RxMoya

时间:2017-07-03 12:51:10

标签: ios swift uitableview rx-swift moya

我正在使用最新版本的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的对象列表?

1 个答案:

答案 0 :(得分:1)

您必须重新加载我们的Moya请求。这有点hacky但我想你得到了提示。

.gridHeader {
   //display: flex;
   display: table-header-group;
   position: absolute;
   top: -50px;
   z-index: 2;
   width: 50px;
   max-width: 50px;
}

或者您可以使用离线优先原则重新设计我们的架构

enter image description here