在RxDataSources中具有SectionModelType的`Self'要求的初始化的声明

问题描述 投票:0回答:1

[使用RxDataSources将分区表与TableViewSectionedDataSource绑定,需要符合SectionModelType的部分。

SectionModelType协议具有以下初始化器作为其要求之一:

    init(original: Self, items: [Item])

此外,相同的协议强制执行var items: [Item] { get }。现在,我们可以使用init或作为初始参数传递的original.items来初始化items数组支持变量(在上述items中)。这非常令人困惑。 SectionModelType代码没有注释。

README的[How部分,介绍了在这种情况下创建部分的内容,讨论了创建类型别名(用于关联值)和items数组,但没有涉及通过init使用original: Self的实现:] >

init(original: SectionOfCustomData, items: [Item]) {
    self = original
    self.items = items
}

虽然这可以在结构中工作,但在类中大喊大叫:

无法分配值:'自我'是不可变的>>

[这里有人可以解释这里发生了什么,为什么我们需要使用Self进行初始化

最后,还有另一种(更简洁的)反应方式(仅在RXSwift / RxCocoa中)将分段表视图绑定到可观察的数据源。例如*我的单元格和部分具有自己的数据模型,这些数据模型必须是可变的(因此是类)*有多个对不同实体有此要求的屏幕,因此我很乐意通过协议来实现这一目标,并使用协议对相应的数据模型进行拍打,并且对RXBinding具有通用的实现方式]

任何可以使现有实现更加清晰或达到上述要点的指针都将非常有帮助。附注:我已经在使用Rx的庞大代码库中工作,所以我不想要使用Rx,或者不使用SwiftUI等。

使用TableViewSectionedDataSource将分段表与RxDataSources绑定,需要符合SectionModelType的分段。此SectionModelType协议具有以下初始化程序,作为...

swift rx-swift rxdatasources
1个回答
0
投票

init(original:items:)copy

初始化程序。它采用该结构的现有实例,并创建一个新实例,该实例完全相同,只不过它更改了items属性中的内容。
© www.soinside.com 2019 - 2024. All rights reserved.