Проблема, как упоминает Вуфи, состоит в том, что вы создаете новый массив каждый раз вместо того, чтобы захватывать ранее созданный массив. Итак, при первом добавлении в массив вы в основном делаете:
[array insertObject:nameOfConfig AtIndex:0];
но в следующий раз вы создаете новый (пустой) массив, и переменная configListDataIndex теперь равна 1, поэтому вы вызываете
[array insertObject:nameOfConfig atIndex:1];
и сбой, потому что 1 выходит за границы для пустого массива. Чтобы решить эту проблему, вы можете сделать что-то вроде:
NSMutableArray *array;
if (self.configListData != nil) // I know, unnecessary, but I like being explicit with my nil checks.
array = self.configListData;
else
array = [NSMutableArray array];
Тогда не выпускайте его в конце функции (поскольку я предполагаю, что ваш получатель для configListData автоматически освобожден или назначен).
Это исправит сбой. Кроме того, вы всегда можете просто позвонить
[array addObject:nameOfConfig];
, который автоматически добавляет объект в конец массива, так что вы можете избавиться от переменной index. Но вы должны сначала исправить сбой, так как изменение этой второй части просто скроет ошибку и сделает еще более загадочным то, что новый конфиг просто заменит старый.