假设我有以下SwiftRx (2.0.0-beta.4) MVVM情况:
我有 4 件事:
- 项目列表视图控制器
- 项目视图模型
- 物品管理器
- 物品
ItemsManager有一个名为items()的函数,它将以可观察的 RxSwift 方式返回 Items。
ItemsViewModel 现在只需要传递项目。稍后可能会为了 View Controller 的缘故在 Item 属性上应用显示逻辑(例如正确显示日期。)
ItemListViewController会将项目放在一个表中,每行一个项目。
一个项目有 4 个属性(如标识符、日期、...),它们将显示在表格行单元格中。
如何在 ItemsViewModel 和 ItemsManager 中进行设置,以便在管理器中添加、删除、更改项目时,它们会通过 ItemsViewModel?
通过阅读文档并查看Rx.playground,现在似乎要使用的是 RxSwift PublishSubject< Item >或者可能是以某种方式订阅了经理的 items()的 RxSwift映射
如何做好这件事?
ItemsManager 现在有这样的东西:
func items() -> Observable<Item> {
// placeholder for now
return [Item(identification: "123", content: ""), Item(identification: "456", content:""), Item(identification: "789", content:"")].toObservable()
}
视图模型中有这个:
let items = Variable(/* how to subsribe to the items in the manager? */)