Nerozumiem tomu, čo sa deje s týmto kódom:
SortArray, čo je NSMutableArray, je prázdny, takže hodnota sortArray.count je 0.
for (NSUInteger i = 0 ; i < (sortedArray.count -1) ; i++) NSLog(@"Apparently %d < %d ( [sortedArray count] %d)", i, sortedArray.count-1, [sortedArray count] );
Preto by sme nikdy nemali vstupovať do slučky, ale v protokole vidím toto:
2014-01-21 12: 11: 16,433 Názov aplikácie [445: 60b] Zrejme 0 <-1 ( [sortArray počet] 0)
Má niekto predstavu o tom, čo môže spôsobiť problém?
odpovede:
5 pre odpoveď č. 1(sortedArray.count -1)
je celé číslo 0 bez znamienka, ktoré sa pokúša odpočítať jedno od seba, takže vaše -1
sa interpretuje ako NSUIntegerMax
0 pre odpoveď č. 2
Môžete (a mali by ste) použiť:
for (NSUInteger i = 0; i < sortedArray.count; i++)
pretože test i < sortedArray.count
vráti sa NO
ako 0 nie je menšie ako 0. Váš aktuálny kód, ak by malo pole obsah, by neopakoval posledný objekt v poli.
0 pre odpoveď č. 3
Problém je vo vašej logike, váš stav by mal byť:
for (NSUInteger i = 0 ; i <= (sortedArray.count -1) ; i++)
alebo
for (NSUInteger i = 0 ; i < sortedArray.count ; i++)
Vo vašom príklade odčítate 1 od nuly, čo vám dáva -1, takže -1 je menšie ako (sortArray.count -1), takže podmienka je pravdivá a vstupuje do slučky.