将集合类型绑定到ViewModel属性

时间:2019-03-15 19:33:33

标签: ios swift mvvm reactive-swift

我有一个项目数组(每个项目对应一个单元格数据),我想创建一个单元格ViewModels数组。

当我尝试将项目映射到MutablePropery时,我得到Binary operator '<~' cannot be applied to operands of type 'MutableProperty<[CellViewModel]>' and '[CellViewModel]'

我应该如何更改以下代码以获得响应流?

class ListViewModel {
var poiData = MutableProperty([CellViewModel]())

init(poiWrapper: PoiWrapper) {
    self.poiData <~ poiWrapper.poiList.map({ (poiItem)  in
        return CellViewModel(poi: poiItem)
    })
  }
}

我的意图是创建一个类似于以下内容的结构:来自MVVM + ReactiveCocoa。我共享的代码是ViewController的ViewModel,在我尝试初始化父ViewModel时尝试在其中创建单元格ViewModels。 enter image description here

1 个答案:

答案 0 :(得分:0)

如果该属性是其他信号的映射,则它应该只是一个常规属性,而不是可变的,并且不需要绑定(即map返回一个属性):

class ListViewModel {
    let poiData = Property<[CellViewModel]>

    init(poiWrapper: PoiWrapper) {
        poiData = poiWrapper.poiList.map({ (poiItem)  in
            return CellViewModel(poi: poiItem)
        })
    }
}