Привязать тип коллекции к свойству ViewModel

#ios #swift #mvvm #reactive-swift

#iOS #swift #mvvm #реактивный-swift

Вопрос:

У меня есть массив элементов (каждый соответствует данным ячейки), и я хочу создать массив моделей просмотра ячеек.

Когда я пытаюсь сопоставить элемент с 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. Код, которым я поделился, — это ViewModel моего ViewController, где я попытался создать ViewModels ячеек, как только запустил свою родительскую ViewModel.
введите описание изображения здесь

Комментарии:

1. Какова цель этого? Чего вы пытаетесь достичь?

Ответ №1:

Если свойство является отображением какого-либо другого сигнала, то это должно быть просто обычное свойство, а не изменяемое, и привязка не требуется (т. Е. map возвращает свойство):

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

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