Переключатель, который проверяет строку и раздел NSIndexPath

Я хотел бы установить оператор switch, который проверяет значение, если NSIndexPath. NSIndexPath - это класс и он состоит (между прочим) раздела и строки (indexPath.row, indexPath.section)

вот как я сформулировал бы оператор if для проверки строки и раздела в одно и то же время:

if indexPath.section==0 && indexPath.row == 0{
//do work
}

Что такое быстрый перевод для этого?

Ответ 1

Один из способов (это работает, потому что сами NSIndexPaths равносильны):

switch indexPath {
case NSIndexPath(forRow: 0, inSection: 0) : // do something
// other possible cases
default : break
}

Или вы можете просто протестировать целые числа, используя шаблон кортежа:

switch (indexPath.section, indexPath.row) {
case (0,0): // do something
// other cases
default : break
}

Другим трюком является использование switch true и того же состояния, которое вы уже используете:

switch true {
case indexPath.row == 0 && indexPath.section == 0 : // do something
// other cases
default : break
}

Лично я использовал бы вложенные операторы switch, где мы тестируем с indexPath.section снаружи и indexPath.row внутри.

switch indexPath.section {
case 0:
    switch indexPath.row {
    case 0:
        // do something
    // other rows
    default:break
    }
// other sections (and _their_ rows)
default : break
}

Ответ 2

Просто используйте IndexPath вместо NSIndexPath и выполните следующие действия:

Протестировано в Swift 3 и 4:

switch indexPath {
case [0,0]: 
    // Do something
case [1,3]:
    // Do something else
default: break
}

Первое целое число - это section, второе - row.