gpt4 book ai didi

ios - 在 RxMoya 中重复请求

转载 作者:行者123 更新时间:2023-11-28 06:16:49 31 4
gpt4 key购买 nike

我将最新版本的 Moya 与 RxSwift 一起使用,我遇到了一个逻辑问题,目前我找不到解决方案。

假设我有一个带有实现以下接口(interface)的 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 之间建立了绑定(bind):

self.viewModel.items
.bind(to: tableView.rx.items(cellIdentifier: cellIdentifier, cellType: cellType)) { row, element, cell in
// cell configuration code
}
.disposed(by: self.disposeBag)

现在,我想刷新 UITableView 的内容以反射(reflect)用户通过应用的其他部分所做的更改。考虑到 RxMoyaProvider 返回一个 Observable,这应该可以通过 Observable 发出的另一个值轻松完成,但我不知道如何与提供者沟通它应该从服务器刷新内容并将其放入同一个 Observable。

我是不是漏掉了什么?是否有更推荐的方法将 UITableView 绑定(bind)到来自 RxMoyaProvider 的对象列表?

最佳答案

您必须重新加载我们的 Moya 请求。这有点老套,但我猜你明白了。

let didAppear = Variable(true)
override func viewDidAppear(_ animated: Bool) {
didAppear.value = true
}

override func viewDidLoad(){
self.didAppear.flatMap{ _ in self.viewModel.items}
.bind(to: tableView.rx.items(cellIdentifier: cellIdentifier, cellType: cellType)) { row, element, cell in
// cell configuration code
}
.disposed(by: self.disposeBag)
}

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

enter image description here

关于ios - 在 RxMoya 中重复请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44886093/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com