RxSwift - 自定义类可观察

时间:2017-02-02 12:25:45

标签: ios swift mvvm rx-swift

我正在创建一个自定义通用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不是我想要的。 :)

1 个答案:

答案 0 :(得分:1)

不要将视图模型本身设为Observable。这是不必要的复杂性,而且不直观。如果您真的想要,那么请看看Variable是如何实现的,这应该可以让您了解如何实现它。

相反,只需使用主题(例如Variable)即可在视图模型中保留数据。