индекс ошибки вне диапазона на основе выбранного тега кнопки - PullRequest
0 голосов
/ 27 февраля 2019

В настоящее время я пытаюсь выбрать игрока, передав свойство тега кнопки внутри массива, как показано в следующей строке кода:

selectedPlayer = players[sender.tag]

Когда я компилирую приложение, оно падает и отображаетОшибка индекса вне диапазона, которая, как я полагаю, объясняется тем, что я обращаюсь к переданному размеру массиваЯ знаю, что убедитесь, что я не превышаю границы массива, мне нужно сделать что-то вроде этого:

players.count - 1

Хотя я не совсем уверен, как реализовать ту же идею с предыдущей строкойкода.Есть предложения?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете использовать троичный оператор ?::

selectedPlayer = (sender.tag < players.count) ? players[sender.tag] : nil

Если вы хотите использовать один код лайнера.

0 голосов
/ 27 февраля 2019

У вас есть массив players из N элементов, убедитесь, что

 0 <= buttonTag < N

, поэтому максимальное значение тега кнопки должно быть = N - 1, вы можете избежать сбоя с помощью

if sender.tag < players.count { 
  selectedPlayer = players[sender.tag] 
}

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

...