iOS开发:能否将类型存储在变量中供同一函数后续使用?
把类型存储在变量中复用的实现方案
当然可以!你完全可以将单元格类型存储在变量中,在同一个函数里后续复用,这样能大大简化代码、减少重复逻辑。针对你的tableView(_:cellForRowAt:)方法,我给你调整一下实现方式:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let object = array.item(at: indexPath.row) else { fatalError("Could not retrieve the table object") } // 定义存储类型的变量,根据条件赋值对应的单元格类型 let cellType: UITableViewCell.Type if object.displayOnLeft { cellType = LeftSidedCell.self } else { // 这里可以补充其他单元格类型,比如RightSidedCell.self cellType = RightSidedCell.self } // 复用变量中的类型来获取标识符和做类型转换 guard let cell = tableView.dequeueReusableCell( withIdentifier: cellType.className, for: indexPath ) as? cellType else { fatalError("Failed to dequeue or cast cell to \(cellType)") } // 统一配置单元格逻辑(比如添加通用的配置方法) cell.configure(with: object) return cell }
关键细节说明:
- 使用
LeftSidedCell.self可以获取该类的元类型(UITableViewCell.Type),把它赋值给变量cellType就能存储下来 - 复用
cellType.className获取单元格标识符,避免重复写硬编码字符串,降低维护成本 - 类型转换时直接用
as? cellType,不用再重复写具体类名,后续修改单元格类型只需要调整一处即可 - 如果有多种单元格类型,这种方式能让条件判断和复用逻辑分离,代码结构更清晰
内容的提问来源于stack exchange,提问作者Alan
相关产品推荐
相关产品推荐

