RxSwift - 自定义 class 作为可观察的

RxSwift - Custom class as observable

我正在创建一个自定义的通用 TableView 模型来使用 MVVM 和 RxSwift。我知道 RxTableViewSectionedReloadDataSource class 但现在不愿意在我的项目中使用它。

模型已创建并正在运行

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 还很陌生) :

不要将视图模型本身设为 Observable。这是不必要的复杂性,而且不直观。如果你真的想,那么看看 Variable 是如何实现的,这应该会让你知道如何去做。

相反,只需使用主题(例如 Variable)来保存视图模型中的数据。