我正在创建一个自定义的通用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的新手)
:
  • 如何从自定义类“发出”事件以触发我在viewController中的订阅?
    我知道一个解决方案是将我的sections数组创建为RxSwift Variable(),然后直接收听它,但是想知道是否有一种方法可以使类(或结构)本身成为可观察的。
  • 是否有解决此问题的更好方法?我经历了RxSwift游乐场和示例项目,但听起来有成千上万种方法可以执行相同的操作。也许Observable不是我想要的。 :)
  • 最佳答案

    不要将 View 模型本身设为Observable。这是不必要的复杂性,而且不是直观的。如果您确实想这样做,那么请看一下Variable的实现方式,这应该使您了解如何实现。

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

    关于ios - RxSwift-自定义类可观察,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42002251/

    10-13 03:56