我认为如果我解释我想要实现的目标会更好,因为我认为错误在于我对 Observables 如何工作的误解。
我有一个包含 UITableView 的 UIViewController 我也在使用 RxSwift 和 RxDataSources,所以我正在绑定我的 tableView 项目,如下所示:
vm.model
.debug()
.drive(tableView.rx.items(dataSource: dataSource))
.disposed(by: disposeBag)
其中vm是一个 viewModel,它包含:
self.model = self.network.provider.getMarkets()
.map { (markets: [Market]) -> [Row] in
var rows = [Row]()
for market in markets {
rows.append(.market(market: market))
}
return rows
}
.map { (rows: [Row]) -> [Model] in
return [Model(section: .market, items: rows)]
}
.shareReplay(1)
.asDriver(onErrorJustReturn: [])
模型在哪里:
var model: Driver<[Model]>
这一切都在第一次很好,tableview 显示项目,但来自debug()的打印:
2017-04-28 20:07:21.382: MarketAndLanguageSelectionViewController.swift:36 (viewDidLoad()) -> subscribed
2017-04-28 20:07:22.287: MarketAndLanguageSelectionViewController.swift:36 (viewDidLoad()) -> Event next(*Multiple items*)
2017-04-28 20:07:22.289: MarketAndLanguageSelectionViewController.swift:36 (viewDidLoad()) -> Event completed
2017-04-28 20:07:22.289: MarketAndLanguageSelectionViewController.swift:36 (viewDidLoad()) -> isDisposed
问题是我不想处理数据源,因为我不想根据用户操作来更新它。如果用户单击 tableViewCell 我想更新模型。关于如何实现这一目标的任何想法?
对不起这么大的问题。