swift switch-statement nsindexpath

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 }