2012-02-28 45 views
0

このwhileループに少し問題があります。オブジェクトを見つけて、おそらくintを増やしたとしても、ループを実行し続けるので、クラッシュしています。 私は他のループもたくさんあり、同様の方法でセットアップしています。すべてうまく動作します。whileループが指定された条件で停止していない

int possible = 0; 

while (possible < [possibleAthetes count]) { 
    if ([[[possibleAthetes objectAtIndex:possible]valueForKey:@"ID"]intValue] == [self.athleteID intValue]) {   
     [possibleAthetes removeObjectAtIndex:possible]; 
     possible = [possibleAthetes count] ; 
    } 
    possible ++; 
} 
+2

クラッシュのスタックトレースをポストします。 –

+0

クラッシュの明白な理由はありません。しかし、ループを制御するために 'possible'を使うと仮定すると、より直接的な方法は' possible = [possibleAthetes];を 'break 'に変更することです。' break'は囲むループを終了させます。 – CRD

+0

投稿のおかげで、この問題から移動した後、私はこのループが実際には問題ではないことに気がつきましたが、何らかの理由でXcodeがクラッシュ後に強調表示していました。 –

答えて

1

オブジェクトを削除してもインクリメントが可能です。ループから抜け出す。

複数のアスリートを取り除く必要がある場合は、中断しないでください(削除されたオブジェクトのために増分する必要はありません)。

int possible = 0; 

while (possible < [possibleAthetes count]) { 

    BOOL criteriaMatch = ([[[possibleAthetes objectAtIndex:possible]valueForKey:@"ID"]intValue] == [self.athleteID intValue]); 

    if (criteriaMatch){   
     [possibleAthetes removeObjectAtIndex:possible]; 
     break; 
    } else { 
     possible++; 
    } 
} 
+0

これが正解です – ragamufin

関連する問題