2012-02-28 70 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

发布崩溃的堆栈跟踪。 – 2012-02-29 00:02:10

+0

没有明显的原因坠机。然而,假设你只使用'possible'来控制循环,更直接的终止方法是改变'possible = [possibleAthetes];'到'break;''break'将终止封闭循环。 – CRD 2012-02-29 00:19:06

+0

感谢帖子,在从这个问题上移动之后,我注意到这个循环并不是实际上的问题,但由于某种原因,Xcode在崩溃后突出显示了它。 – 2012-02-29 00:21:19

回答

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 2012-02-29 04:07:35