Быстрое преобразование кода 2 -> 3, приводящее к ошибке двоичного оператора в пути индекса - PullRequest
0 голосов
/ 09 января 2019

Использовал Xcode 7 с swift 2. Приложение работало нормально. Обновлен до Xcode 8. Он автоматически конвертирует код из swift 2 -> swift 3. Теперь у меня проблема с кодом для моего табличного представления.

Ошибка с этой строкой кода:

if (indexPath as NSIndexPath).row == 0 || indexPath == 1 {
        counter = 0
        self.performSegue(withIdentifier: "Day1", sender: self)
}

Как говорится, двоичный оператор '==' нельзя применять к операндам типа 'index path' и 'int'

Что это значит и как мне это исправить?

   override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    if (indexPath as NSIndexPath).row == 0 || indexPath == 1 {
        counter = 0
        self.performSegue(withIdentifier: "Day1", sender: self)
    }

    if (indexPath as NSIndexPath).row == 1 {
        counter = 1
        self.performSegue(withIdentifier: "Day2", sender: self)
    }
}

1 Ответ

0 голосов
/ 09 января 2019

Ошибка происходит из этого куска кода

indexPath == 1

вам нужно получить свойство row типа Int

indexPath.row == 1

Также обратите внимание, что нет необходимости конвертировать IndexPath в NSIndexPath

indexPath.row

тогда я думаю, что вы, вероятно, не хотите проверять второе условие в первом операторе if, потому что в этом случае второе условие if не будет выполнено так, как вы хотите

if indexPath.row == 0

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if indexPath.row == 0 {
        counter = 0
        self.performSegue(withIdentifier: "Day1", sender: self)
    } else if indexPath.row == 1 {
        counter = 1
        self.performSegue(withIdentifier: "Day2", sender: self)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...