我正在创建一个自定义通用TableView模型来使用MVVM和RxSwift。我知道RxTableViewSectionedReloadDataSource
课程但不愿意在我的项目中使用它。
模型已创建并正常工作
typealias TableViewModel = TableModel<CellDescriptor>
class TableModel<T> {
var sections = [SectionModel<T>]()
func add(item: SectionModel<T>) {
sections.append(item)
}
// More funcs there...
}
我在我的ViewModel中创建了一个实例:
var tableViewModel = Variable<TableViewModel>(TableViewModel())
然后在我的viewController中听取事件
viewModel.tableViewModel.asObservable().subscribe({ [weak self] value in
self?.tableView.reloadData()
}).addDisposableTo(dispose)
这里有几个问题(我对FRP来说相当新) :
我怎样才能&#34;发出&#34;从我的自定义类在viewController中触发我的订阅的事件?
我知道一个解决方案是将我的sections数组创建为RxSwift Variable()
,然后直接听它,但想知道是否有一种方法可以使类(或结构)本身成为Observable。
这个问题有更好的方法吗?我经历了RxSwift游乐场和示例项目,但听起来有一千种方法可以做同样的事情。也许Observable
不是我想要的。 :)
答案 0 :(得分:1)
不要将视图模型本身设为Observable
。这是不必要的复杂性,而且不直观。如果您真的想要,那么请看看Variable
是如何实现的,这应该可以让您了解如何实现它。
相反,只需使用主题(例如Variable
)即可在视图模型中保留数据。