Ошибка при использовании локальной переменной для доступа к индексу массива

По какой-то причине это происходит каждый раз, когда я пытаюсь получить доступ к определенному индексу из массива, указав переменную int в индексе в цикле for. Когда я это делаю, я получаю ошибку Thread 1, но если я использую переменную, которая не была объявлена ​​в самом цикле forloop, то, похоже, она работает нормально. Код:

for(int i =0 ; i<= [array count]; i++) {
    NSNumber *convert = [array objectAtIndex:i]; //results in error
    NSLog(@"%i", [convert intValue]);
   }

person Humzaa Choudryy    schedule 16.10.2015    source источник
comment
@Alexander Iam использует компилятор LLVM для xCode.   -  person Humzaa Choudryy    schedule 16.10.2015
comment
В первом примере ошибка в i‹= [количество массивов]. Во-вторых: каково значение indexAt?   -  person theWalker    schedule 16.10.2015


Ответы (1)


Проблема в том, что вы пытаетесь получить доступ к массиву за пределами его возможностей. Массив начинается с индекса 0 и продолжается до array.count - 1. Тем не менее, попробуйте код ниже, и у вас должно получиться хорошо:

for (int i = 0 ; i <= array.count - 1 ; i++) {
    NSNumber *convert = [array objectAtIndex:i];
    NSLog(@"%i", [convert intValue]);
}

Другой вариант может быть:

for (int i = 0 ; i < array.count ; i++) {
    NSNumber *convert = [array objectAtIndex:i];
    NSLog(@"%i", [convert intValue]);
}
person Abhinav    schedule 16.10.2015