Связывание секционированной таблицы с RxDataSources с помощью TableViewSectionedDataSource, требуются разделы, соответствующие SectionModelType.
Этот протокол SectionModelType имеет следующий инициализатор в качестве одного из это требования:
init(original: Self, items: [Item])
Кроме того, тот же протокол обеспечивает соблюдение var items: [Item] { get }
. Теперь мы можем инициализировать вспомогательную переменную массива элементов (в вышеупомянутом init
) либо с original.items
, либо с items
, переданным в качестве параметра инициализации. Это очень сбивает с толку. Код SectionModelType не имеет комментариев.
Раздел How в README, объясняющий создание разделов именно для этого случая, говорит о создании типовых псевдонимов (для связанное значение) и массив элементов, но ни слова о следующей реализации init
с original: Self
:
init(original: SectionOfCustomData, items: [Item]) {
self = original
self.items = items
}
Хотя это может работать в структуре, то же самое в классе кричит:
Невозможно присвоить значение: «я» неизменяемо
Может ли кто-нибудь здесь объяснить, что здесь происходит и почему нам НУЖНО инициализировать Self
Наконец, есть ли другой (более чистый) способ реактивно (только в RXSwift/RxCocoa) привязать секционированное табличное представление к наблюдаемому источнику данных. например * мои ячейки и разделы имеют свою собственную модель данных, которая должна быть изменчивой (следовательно, классы) * есть несколько экранов с этим требованием для разных сущностей, поэтому я был бы заинтересован в достижении этого с помощью протоколов вместо этого и шлепнуть соответствующие данные модель с протоколом и имеют общую реализацию для RXBinding
Любые указатели, чтобы получить больше ясности в существующей реализации или достичь вышеуказанных пунктов, были бы действительно полезны. P.S.: Я уже работаю с огромной кодовой базой, которая использует Rx, поэтому отказ от использования Rx или переход на SwiftUI и т. д. — это не то, что я ищу.