0 основанные массивы, длина id равна 0, 0 - 1 = -1, это, очевидно, вызовет исключение.
[indexPath indexAtPosition: [indexPath length] - 1]
изменить на
[indexPath indexAtPosition: [indexPath length]]
и вы уверены, что не хотите indexPath.row. похоже, вы просто возвращаете длину каждый раз.