Я бы порекомендовал увеличить или уменьшить значение вашего индекса (которое вы назвали приращением) перед проверкой достоверности, а если оно недопустимо, отмените ваше действие в другом. Вот так:
if (recognizer.direction==UISwipeGestureRecognizerDirectionLeft)
{
increment++;
if (increment<[addArray count])
{
// Your code
}
else
{
increment--; // The increment would pass the range of the array, set it back.
}
}
И для другого направления.
РЕДАКТИРОВАТЬ: Чтобы уточнить, исходная проблема заключается в том, что вы проверяете, чтобы убедиться, что ваш индекс действителен, но, увеличивая после проверки, вы в конечном итоге делает его недействительным. Используя ваш пример, когда приращение равно 3 (самый высокий индекс вашего массива), оно на самом деле меньше, чем счетчик массива, который равен 4. Затем вы увеличиваете свой индекс до 4, что будет за пределами, или, в вашем случай, попадайте в это заявление if (которое больше не понадобится с помощью предложения) и регистрируйте ваш FAIL.