2017-02-12 23 views
0

У меня есть цикл, и если условия следующим образом,не может сломаться, если условие в Objective C

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, если значение моментального снимка равно указанному значению во втором, если условие сначала, если условие. Что касается примера, если [snapshot.value [@ "leaseType"] intValue] == 2 истинно, тогда это должно перейти к следующему снимку, а не к следующему условию. Но когда я делаю это выше, он проверяет следующий блок условий, даже если первый блок условий if равен true. Поэтому я получаю один и тот же объект повторно. Я попробовал следующее:

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.

ответ

3

Нет break для if. Это только для петель.

Однако в вашей ситуации вы можете использовать continue для обеспечения следующего цикла цикла.

+0

Можете ли вы показать это с помощью моего кода? – shamila

+2

@ S.Sallay просто измените 'break;' на 'continue;' – Joshua