Работа с ObjectAtIndex дает неограниченную ошибку - PullRequest
0 голосов
/ 05 марта 2011

Я хочу сделать что-то действительно простое, но я получаю ошибку, чего мне не хватает?

int i;
int count;

TutorialAppDelegate *appDelegate = (TutorialAppDelegate *)[[UIApplication sharedApplication] delegate];
Animals *aAnimal = (Animals *)[appDelegate.animals objectAtIndex:i];
count = [animals count];


if (i < count)
{
    NSLog(@"%@",aAnimal.animalName);
}

ОШИБКА:

 '*** -[NSMutableArray objectAtIndex:]: index 22510243 beyond bounds [0 .. 5]'

0 ... 5 правильно! В массиве всего 6 значений.

И используйте

NSLog(@"%@",aAnimal.animalName);

из функции if возвращает правильное значение, когда я также изменяю значение i на 0.

Ответы [ 2 ]

5 голосов
/ 05 марта 2011

Вам нужно инициализировать i.

int i = 0;

По умолчанию целые числа не установлены на ноль или что-либо разумное.Вы можете проверить это, добавив строку, например:

NSLog(@"Value of i without initialising is: %d", i);
0 голосов
/ 05 марта 2011

пожалуйста, инициализируйте ваш изменяемый массив-

appDelegate.animals=[[NSMutableArray alloc] initWithArray:(NSArray *)array];

и проверьте ваш массив, упомяните ли вы объект nil в конце элементов вашего массива

NSMutableArray* animals=[[NSMutableArray alloc] 
initWithObjects:@"one 1",@"two 2",nil];
...