我有一个for循环,如果条件如下,
for (snapshot in snapshot.children)
{
if([entirePlBtnChecked isEqual: @"Yes"]){
if([snapshot.value[@"leaseType"] intValue] == 2){
[self.allSnapshot addObject:snapshot];
}
}
if([hdbApartmntChecked isEqual: @"Yes"]){
if([snapshot.value[@"housingType"] intValue] == 0){
[self.allSnapshot addObject:snapshot];
}
}
if([condominiumBtnChecked isEqual:@"Yes"]){
if([snapshot.value[@"housingType"] intValue] == 1){
[self.allSnapshot addObject:snapshot];
}
}
if([landedHouseBtnChecked isEqual:@"Yes"]){
if([snapshot.value[@"housingType"] intValue] == 2){
[self.allSnapshot addObject:snapshot];
}
}
if([commonRoomBtnChecked isEqual:@"Yes"]){
if([snapshot.value[@"leaseType"] intValue] == 0){
[self.allSnapshot addObject:snapshot];
}
}
if([masterRoomBtnChecked isEqual:@"Yes"]){
if([snapshot.value[@"leaseType"] intValue] == 1){
[self.allSnapshot addObject:snapshot];
}
}
if([entirePlaceChecked isEqual:@"Yes"]){
if([snapshot.value[@"leaseType"] intValue] == 2){
[self.allSnapshot addObject:snapshot];
}
}
}
NSLog(@"%lu",(unsigned long)[self.allSnapshot count]);
NSLog(@"%@",self.allSnapshot);
当我打印数组时,同一个对象在数组中重复两次。如果快照值等于第一个if条件中第二个if条件中提到的值,我想要打破if条件。至于一个例子,如果[snapshot.value [@“leaseType”] intValue] == 2为真,那么这应该移动到下一个快照,而不是下一个if条件。但是当我以上述方式执行时,即使第一个if条件块为真,它也会检查下一个if条件块。所以我反复得到同一个物体。我尝试了以下,
for (snapshot in snapshot.children)
{
if([entirePlBtnChecked isEqual: @"Yes"]){
if([snapshot.value[@"leaseType"] intValue] == 2){
[self.allSnapshot addObject:snapshot];
break;
}
}
if([hdbApartmntChecked isEqual: @"Yes"]){
if([snapshot.value[@"housingType"] intValue] == 0){
[self.allSnapshot addObject:snapshot];
break;
}
}
if([condominiumBtnChecked isEqual:@"Yes"]){
if([snapshot.value[@"housingType"] intValue] == 1){
[self.allSnapshot addObject:snapshot];
break;
}
}
if([landedHouseBtnChecked isEqual:@"Yes"]){
if([snapshot.value[@"housingType"] intValue] == 2){
[self.allSnapshot addObject:snapshot];
break;
}
}
if([commonRoomBtnChecked isEqual:@"Yes"]){
if([snapshot.value[@"leaseType"] intValue] == 0){
[self.allSnapshot addObject:snapshot];
break;
}
}
if([masterRoomBtnChecked isEqual:@"Yes"]){
if([snapshot.value[@"leaseType"] intValue] == 1){
[self.allSnapshot addObject:snapshot];
break;
}
}
if([entirePlaceChecked isEqual:@"Yes"]){
if([snapshot.value[@"leaseType"] intValue] == 2){
[self.allSnapshot addObject:snapshot];
break;
}
}
}
这从第一个条件中断并且没有移动到第二个if条件,即使第一个条件失败也是如此。我得到数组计数为1,我应该得到2。
答案 0 :(得分:3)
break
没有if
。它只适用于循环。
但是,在您的情况下,您可以使用continue
强制执行下一个循环运行。