2017-02-12 56 views
0

條件我有一個for循環,並且如果條件如下,不能打破如果在目標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條件塊爲真,它也會檢查下一個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.

回答

3

if沒有break。它僅用於循環。

但是,在您的情況下,您可以使用continue來強制執行下一次循環運行。

+0

你可以使用我的代碼顯示它嗎? – shamila

+2

@ S.Sallay只是改變'break'到'continue;' – Joshua