使用枚举管理TableView节以提高清晰度。

作为开发人员,重要的是我们试图使我们的代码尽可能清晰和安全。

将整数分配给各节可能会导致其他开发人员不清楚的代码,而这些开发人员最终可能会在以后阅读和使用我们的代码。 例如,这是一个典型的tableView,我们在其中使用Integers管理节。

典型方法

  func numberOfSections(在tableView中:UITableView)-> Int { 
  返回 2 
  } 

  func tableView( _ tableView:UITableView,cellForRowAt indexPath:IndexPath)-> UITableViewCell { 
  切换 indexPath.section { 
  案例 0: 
  返回 UITableViewCell() 
  情况 1: 
  返回 UITableViewCell() 
  默认值
  返回 UITableViewCell() 
  } 
  } 

在上面的numberOfSections代码中,很明显我们有2个部分,但是对于开发人员来说,阅读您的代码的这两部分是什么?

在cellForRowe中,我们切换每个部分,并为每个部分返回指定的单元格。 这里有两个问题:

  1. 我们必须为0和1以外的任何部分提供默认的tableViewCell。
  2. 对于其他阅读我们代码的开发人员来说,尚不清楚第0节和第1节是什么。

枚举方法

一种新方法是使用枚举来管理每个部分。 例如,说我们有一个tableView,它根据他们的运动显示球队列表。 我们有两项运动:

棒球和足球

因此,我们想将tableView分为2个部分,并在这些部分下列出我们的团队,并相应地配置每个单元格。

步骤1:设定枚举

  枚举 Sports:CaseIterable { 
 棒球,足球 
  静态 函数 numberOfSections()-> Int { 
  返回 自身 .allCases.count 
  } 
  静态 函数 getSection( _ section:Int)->体育{ 
  返回 自身 .allCases [section] 
  } 
  } 

我们创建我们的枚举,并使其符合CaseIterable协议。 这将允许我们通过使用类型的allCases属性来访问所有类型案例的集合

我们设置了两个功能:

第一个函数numberOfSections返回带有个案数的Integer。 在这里,我们使用协议函数allCases.count来获取枚举中所有案例的计数。

第二个函数getSection接受一个I​​nt,我们再次使用它来自CaseIterable的allCases方法来返回正确的大小写,然后使用方括号将其中的部分放回去,以返回该特定的大小写。

我已经将每个方法设为静态,以便可以在类型本身上调用它而不必初始化枚举。

然后,我们可以如下应用枚举:

  func numberOfSections(在tableView中:UITableView)-> Int { 
  返回 Sports.numberOfSections() 
  } 
  func tableView( _ tableView:UITableView,numberOfRowsInSection部分:Int)-> Int { 
  切换 Sports.getSection(section){ 
  案例。棒球: 
  返回 1 / *但是行数很多* / 
   .football: 
  返回 1 / *但是行数很多* / 
  } 
  } 
  func tableView( _ tableView:UITableView,cellForRowAt indexPath:IndexPath)-> UITableViewCell { 
  切换 Sports.getSection(indexPath.section){ 
  案例。棒球: 
  返回 UITableViewCell() / *自定义单元格* / 
   .football: 
  返回 UITableViewCell() / *自定义单元格* / 
  } 
  } 

如您所见,上面的代码更加清晰。 在numberOfSections中,我们从Sports枚举中返回案例数。

在numberOfRowes和cellForRowe中,我们为每个特定部分打开了Sports枚举,其他开发人员很清楚每个部分是什么,最好的是,我们不再需要在开关中使用默认语句。

基本上可以总结一下,我希望您喜欢这篇小文章,并摘取了一些有价值的技巧,现在可以开始在tableView中实现枚举了。

快乐编码🙂

感谢Mario Boikov给我提供了使用枚举管理部分的原始想法。 您可以在下面的链接中查看他的操作方式。

https://medium.com/@marioboikov/swift-enums-for-managing-uitableview-sections-dfb6ec58f485