如果 objective c 中的条件无法中断

cannot break if condition in objective c

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

即使第一个条件失败,这也会从第一个条件中断并且不会移动到第二个条件。我得到的数组计数为 1,而我应该得到 2。

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

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