Вам действительно нужно опубликовать тип исключения и ваш код, чтобы дать нам разумный шанс решить вашу проблему . Тем не менее, я все равно собираюсь сделать попытку.
Полагаю, ваш код выглядит примерно так:
Array1 = [[NSMutableArray alloc] initWithCapacity: someNumber];
for (i = 0 ; i < someNumber ; ++i)
{
[Array1 replaceObjectAtIndex:i withObject: [NSString stringWithFormat:@" Trip %i",i+1]];
}
Все массивы начинаются с 0 объектов, даже если вы используете -initWithCapacity:
. Этот метод только подсказывает среде выполнения, что в какой-то момент массив увеличится до указанного размера. Вам нужно использовать -addObject:
.
Редактировать
Да, от вашего редактирования я уверен, что я прав. Массив начался пустым, и вы пытаетесь заменить объект с индексом 0, которого пока нет.
Код выше следует изменить следующим образом:
array1 = [[NSMutableArray alloc] initWithCapacity: someNumber]; // fixed naming convention too :-)
for (i = 0 ; i < someNumber ; ++i)
{
[array1 addObject: [NSString stringWithFormat:@" Trip %i",i+1]];
}
-addObject:
добавляет новые объекты в конец массива.
Если вам нужно что-то, похожее на массив C или Java, вы можете предварительно заполнить массив NSNull
объектами
array1 = [[NSMutableArray alloc] initWithCapacity: 6]; // fixed naming convention too :-)
for (i = 0 ; i < 6 ; ++i)
{
[array1 addObject: [NSNull null]];
}
// Now the following will work
[array1 replaceObjectAtIndex: 4 withObject: @"foo"];