Почему doesen't работа номер 2 в этом для цикла?

У меня есть функция, которая выполняет канавку каждый элемент в массиве. Трудно объяснить, таким образом, я просто вставлю в коде здесь:

NSLog(@"%@", arraySub);

for (NSNumber *favoriteThing in arrayFav){  

    int favoriteLoop = [favoriteThing intValue] + favCount;
    NSLog(@"%d", favoriteLoop);

    id arrayFavObject = [array objectAtIndex:favoriteLoop];
    [arrayFavObject retain];
    [array removeObjectAtIndex:favoriteLoop];
    [array insertObject:arrayFavObject atIndex:0];
    [arrayFavObject release];

    id arraySubFavObject = [arraySub objectAtIndex:favoriteLoop];
    [arraySubFavObject retain];
    [arraySub removeObjectAtIndex:favoriteLoop];
    [arraySub insertObject:arraySubFavObject atIndex:0];
    [arraySubFavObject release];

    id arrayLengthFavObject = [arrayLength objectAtIndex:favoriteLoop];
    [arrayLengthFavObject retain];
    [arrayLength removeObjectAtIndex:favoriteLoop];
    [arrayLength insertObject:arrayLengthFavObject atIndex:0];
    [arrayLengthFavObject release];

}

NSLog(@"%@", arraySub);

Массив arrayFav содержит эти числа: 3, 8, 2, 10, 40. Массив array содержит 92 строки с именем. Массив arraySub содержит числа 0 кому: 91, представление имени файла с заголовком от массива array. Массив arrayLength содержит 92 строки, представляющие размер каждого файла от массива arraySub.

Теперь, первое NSLog шоу, как ожидалось, числа от 0 до 91. NSLog- s в цикле показывает числа 3, 8, 2, 10, 40, также как ожидалось.

Но вот нечетная часть: последнее NSLog шоу эти числа: 40, 10, 0, 8, 3, 1, 2, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91

это равняется 40, 10, 0, 8, 3, и так далее.

Это, как предполагалось, не было нулем там, это, как предполагалось, было 2..

У Вас есть какая-либо идея в том, почему это происходит или способ зафиксировать ее?Спасибо.

Править: Код изменился. arrayFav теперь содержит числа.

1
задан Emil 25 April 2010 в 09:13
поделиться

2 ответа

Я исправил это, удалив цикл for и просто поискав правильное место в arraySub.

// If the object is not really the object we want, get what we want
if (favoriteLoop != [[[arraySub objectAtIndex:favoriteLoop] description] intValue]){
    favoriteLoop = [arraySub indexOfObject:[NSString stringWithFormat:@"%d", favoriteLoop]];
}         
0
ответ дан 3 September 2019 в 01:02
поделиться

Метод -intValue возвращает 0 если есть что-то странное в начале преобразуемой строки.

Вместо использования NSString для хранения целых чисел попробуйте использовать NSNumber , чтобы принудительно сохранять числа в вашем массиве, или отладьте то, что отправляется в сообщении -intValue .

2
ответ дан 3 September 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: