RxSwift - 可观察的自定义类
Posted
技术标签:
【中文标题】RxSwift - 可观察的自定义类【英文标题】:RxSwift - Custom class as observable 【发布时间】:2017-02-02 12:25:44 【问题描述】:我正在创建一个自定义的通用 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 中的订阅?
我知道一个解决方案是将我的 section 数组创建为 RxSwift Variable()
,然后直接收听它,但想知道是否有办法使类(或结构)本身可观察。
有没有更好的方法来解决这个问题?我浏览了 RxSwift 游乐场和示例项目,但听起来有上千种方法可以做同样的事情。也许Observable
不是我想要的。 :)
【问题讨论】:
【参考方案1】:不要将视图模型本身设为Observable
。这是不必要的复杂性,而且不直观。如果你真的想,那么看看Variable
是如何实现的,它应该会让你知道如何去做。
相反,只需使用主题(例如Variable
)来保存视图模型中的数据。
【讨论】:
以上是关于RxSwift - 可观察的自定义类的主要内容,如果未能解决你的问题,请参考以下文章
如何在 RxSwift 中使用 EventConvertible 创建客户观察者事件?