DataDrivenRxDatasources 3.6.0

DataDrivenRxDatasources 3.6.0

Nikolay FiantsevMisha Markin 维护。



 
依赖关系
RxSwift~> 6.0
RxDataSources~> 5.0
 

  • Dmytro Makarenko、Nikolay Fiantsev、Misha Markin 和 Dmytro Dovhan 撰写

DataDrivenRxDatasources

DataDrivenRxDatasources - 基于 RxDataSources 的 MVVM 抽象模板代码。

管理具有数据源的表格/集合视图的常规方法存在几个缺点

  • 重复的模板代码 - 数据源和代理方法,单元格注册等
  • 由于它们通常放置在不同的顺序、互相远离,甚至位于不同的文件中,因此错综复杂地跟踪TableView/CollectionView数据源和代理方法的控制流。
  • 违反依赖倒置原则。关于哪些单元格附加到表格/集合视图以及如何实例化这些单元格(nib 或类)的知识泄露到相应的视图控制器中。视图控制器现在依赖于低级别模块(表格/集合视图单元格)。
  • 因为数据源方法必须一致,所以有很多错误空间。例如,如果 numberOfRows(inSection:), numberOfSections(in:) 和 tableView(_,cellForRowAt:) 不一致,则会导致不受欢迎的行为或甚至崩溃。这些方法中的单元格是一个通用的 UITableViewCell/UICollectionViewCell 类型,通常应该转换为具体类。
  • 表格/集合视图数据源协议实现是命令式的,并且感觉不到 Swift 的方式。

RxDataSources 通过优雅的数据绑定机制和强大的 AnimatableSectionModel & amp; SectionModel 抽象帮助我们解决了这些问题,但仍然与可重复的单元格注册和违反依赖倒置原则的自己作对。

DataDrivenRxDatasources 带来了另一层面的抽象,并使我们能够解决这些问题,并设计出依赖于其 ViewModel 的数据驱动、可重用、声明性表格/集合视图组件。我们库的核心基于抽象协议,这些协议旨在提供绑定部分和单元格,但不关心这些部分和单元格究竟是什么。更多信息请参阅 Medium

安装DataDrivenRxDatasources 可通过以下方式获取:

入门指南

private typealias SectionViewModel = AnimatableTableSectionModel<String>

let cellItems = [
      SampleCellViewModel(name: "Name 1"),
      SampleCellViewModel(name: "Name 2")
    ]
  
let sections: Driver<[AnimatableTableSectionModel<String>]> = .just([SectionViewModel(model: "Some Section", items: cellItems)])
    
tableView.rx
  .bind(sections: sections)
  .disposed(by: bag)

请查看我们的“示例”项目来了解更多使用案例。

作者

德米特罗·马卡连科

尼古拉·费安采夫

米沙·马尔金

德米特罗·杜万

贡献

  • 有什么问题或者需要其他帮助?请提出一个问题或创建一个Pull Request。
  • 欢迎Pull Request。

要求

DataDrivenRxDatasources需要iOS11,RxDataSources 5.x和RxSwift 6.x。对于最后支持的iOS10,请使用DataDrivenRxDatasources 2.1.0。对于最后支持的RxSwift 5.x,请使用DataDrivenRxDatasources 1.2.0。

许可

DataDrivenRxDatasources遵循MIT许可协议。更多信息请参阅LICENSE文件。