iOS中具有通用数据模型的自定义可重用数据源。

UITableViewUICollectionView是用于在任何类型的iOS应用程序中呈现数据的两个常见UI组件。但是将这些大数据呈现到单元中并不是什么大问题,主要的问题是我们如何处理这些数据。

让我们以UITableView为例,通常通过在viewController中采用UITableviewDatasource协议一致性,我们可以使用它的一些专用方法来处理tableview内部的数据呈现。 这是简单的代码片段示例

上面的例子非常简单,我们只是为viewController创建了一个扩展,并添加了所有tableview数据源方法。

它是如此的好和简单,但是为什么我应该使用Custom数据源呢?

好的 !!!! 当必须在其他视图控制器中显示这些相同的数据块时,您将怎么办。

没什么大不了的,我也将在其他视图控制器中创建相同的东西。

创建自定义可重用数据源可以处理整个应用程序中的所有数据源逻辑和数据模型渲染部分。我在整个应用程序中都说了。是的,但是不同控制器的数据模型不同,所以我将自定义数据源设置为一个通用模型类型,因此只需使用您的数据模型实例化此自定义数据源,以下是代码段。

在这里,我采用了模型(用于数据模型渲染),reuseIdentifier(用于使TableView单元格标识符出列)和CellConfigurator(它是一个元组,它同时容纳Data模型和UITableviewCell,其工作方式类似于tableview单元格中用于索引处行的闭包)作为参数以上课程。

我还在此类的扩展内部创建了一个静态方法来管理特定的数据模型。您还可以根据需要创建自己的模型。代码段。

 扩展TableViewCustomDataSource,其中模型== ItemsDetailsLists {静态函数displayData(用于itemLists:[ItemsDetailsLists],withCellidentifier复用标识符:字符串)-> TableViewCustomDataSource {返回TableViewCustomDataSource(模型:itemLists,reuseIdentifier:reuseIdentifier,cellConfigurator:{(数据,单元格)入口itemcell: ItemListsTableViewCell =单元格为!ItemListsTableViewCellitemcell.setupParameters(itemlist:data)})}} 

在您的viewController内部只需创建一个像这样的属性

 私人var dataSource:TableViewCustomDataSource ? 

这里的ItemDetailsLists是我的数据模型,一旦获得响应,就可以像这样设置您的customdatsouce属性,并将tableViewdataSouce设置为customdatasource。

  func renderTableViewdataSource(_ itemlists:[ItemsDetailsLists]){dataSource = .displayData(用于:itemlists,带有Cellidentifier:“ ItemListsTableViewCell”)self.itemListTableview.dataSource = dataSourceself.itemListTableview.reloadData()} 

这是完整的源代码Github链接

欲了解更多博客,请点击此链接

参考文献:

*重构视图控制器,作者Paul Hudson

Swift中可重用的数据源 通过约翰·桑德尔

Shakti Prakash在about.me

我是印度班加罗尔的软件工程师。 查看我的仓库。

关于我