如果客观条件c不能打破

时间:2017-02-12 14:16:39

标签: objective-c if-statement for-loop break

我有一个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。

1 个答案:

答案 0 :(得分:3)

break没有if。它只适用于循环。

但是,在您的情况下,您可以使用continue强制执行下一个循环运行。