使用RxTableViewSectionedAnimatedDataSource绑定时提示不遵循RxTableViewDataSourceType
报错根因
类型推导错误导致序列泛型不匹配:你定义的sectionDatas本身就是[CustomSectionDataType](Section模型的一维数组),在初始化BehaviorRelay时你又额外套了一层数组,写成了[sectionDatas],导致Relay的泛型被推导为[[CustomSectionDataType]](二维数组)。而tableView.rx.items(dataSource:)方法要求绑定的可观察序列元素必须为一维的[SectionModel]类型,类型不匹配时编译器会误抛出协议不兼容的错误提示。
依赖导入不全:如果修改类型后仍报错,确认你同时导入了三个依赖库:
import RxSwift import RxCocoa import RxDataSources
修复方案
仅需修改BehaviorRelay初始化代码,去掉多余的外层数组:
// 原错误代码 // let items = BehaviorRelay(value: [sectionDatas]) // 修正后代码 let items = BehaviorRelay(value: sectionDatas)
可选排查项
- 确认你使用的
RxDataSources版本与RxSwift、RxCocoa版本匹配,避免跨版本协议声明差异导致的错误 - 若自定义Section的Item为非基础类型,需确认Item遵守
IdentifiableType与Equatable协议(当前你用的是String类型,默认满足要求无需额外处理)
内容的提问来源于stack exchange,提问作者Zim
相关产品推荐
相关产品推荐

