我在Swift中有一个UITableView行填充代码,如下所示。问题出现在第二部分,第2行是有条件存在的。如果flag为false,则所有后续行向上移动一个单元格,因此第3行变为第2行。我想知道是否可以在Swift switch语句中方便地指定这一点,而不是使用蛮力方法,在这种方法中,我根据标记true或false编写2个switch语句?
switch indexPath.section {
case 0:
cell.leftLabel.text = "Row 0";
case 1:
switch indexPath.row {
case 0:
cell.leftLabel.text = "Setting1"
case 1:
cell.leftLabel.text = "Setting2"
case 2:
/* Conditionally present row */
if flag {
cell.leftLabel.text = "Setting3"
}
case 3:
cell.leftLabel.text = "Setting4"
...
}
我不完全确定整个用例,但这里有一些改进,您可以使用switch case
使这件事变得更容易。
- 首先,可以同时对
row
和section
使用基于元组的switch
- 其次,将布尔运算符和case一起使用,这使整个比较更容易接近,并删除了嵌套的if/else和casing结构
,这样的东西会进一步帮助你
switch (indexPath.section, indexPath.row) {
case (0, _):
cell.leftLabel.text = "Row 0"
case (1, 0):
cell.leftLabel.text = "Setting1"
case (1, 1):
cell.leftLabel.text = "Setting2"
case (1, 2) where flag:
cell.leftLabel.text = "Setting3"
case (1, 2): // no flag here
cell.leftLabel.text = "Setting3 without flag"
case (1, 3):
cell.leftLabel.text = "Setting4"
...
}