swift - conmutador que verifica la fila y la sección de NSIndexPath
switch-statement (2)
Simplemente use IndexPath
lugar de NSIndexPath
y haga lo siguiente:
Probado en Swift 3 y 4 :
switch indexPath {
case [0,0]:
// Do something
case [1,3]:
// Do something else
default: break
}
El primer entero es la section
, el segundo es la row
.
Me gustaría establecer una declaración de cambio que compruebe un valor si NSIndexPath
. NSIndexPath
es una clase y consta (entre otras cosas) de sección y fila ( indexPath.row, indexPath.section
)
así es como formularía una instrucción if para verificar una fila y una sección al mismo tiempo:
if indexPath.section==0 && indexPath.row == 0{
//do work
}
¿Qué es la traducción rápida del interruptor para esto?
Una forma (esto funciona porque NSIndexPaths mismos son equivalentes):
switch indexPath {
case NSIndexPath(forRow: 0, inSection: 0) : // do something
// other possible cases
default : break
}
O puede probar contra enteros, usando un patrón de tuplas:
switch (indexPath.section, indexPath.row) {
case (0,0): // do something
// other cases
default : break
}
Otro truco es usar switch true
y la misma condición que ya está usando:
switch true {
case indexPath.row == 0 && indexPath.section == 0 : // do something
// other cases
default : break
}
Personalmente, usaría declaraciones de switch
anidadas donde probamos contra indexPath.section
en el exterior e indexPath.row
en el interior.
switch indexPath.section {
case 0:
switch indexPath.row {
case 0:
// do something
// other rows
default:break
}
// other sections (and _their_ rows)
default : break
}