2013-06-15 5 views
-2

"가장 안쪽 루프에서 두 번째 루프를 사용하고 있습니다. 조건이 충족 될 경우 'if 조건'을 확인하고 있습니다. 전체 루프는 내부 ​​루프와 외부 루프를 모두 중지해야 함을 의미합니다. 하지만 그 순간에 아래 코드는 내부 루프를 막을 수 있습니다. 외부 루프가 멈추지 않습니다. 제게 해결책을주십시오. "다중 for 루프 처리

for(int i=0; i<a_AllClothing.count;i++) 
      { 

       for (int j=0; j<tempAsset_array.count; j++) { 

        if([l_dressName rangeOfString:ImageName].location!=NSNotFound) 
        { 
         NSLog(@"Matched"); 

         break; 
        } 
       } 
      } 
+0

1 학년 CS 학생입니까? "Let us C"또는 +2 수준의 Computer Science book을 읽어야합니다. 바깥 고리에'condtion (s)'을 사용하면'goto의 힘을 가지지 만 이것을 자주 사용하지 마십시오. –

+0

선생님 나는 단지 부울 값을 사용하는 것보다 다른 기법이 있는지 알고 싶었습니다. – DevMate

+0

자바에서 루프 라벨을 붙였습니다. C/Obj-C에서는 BOOL을 사용하거나 전체 코드를 메서드에 리팩터링하고 가장 안쪽의'if'에서'return'을 사용할 수 있습니다. –

답변

1
BOOL isFound = NO; 
for(int i=0; i<a_AllClothing.count && !isFound;i++) 
      { 

       for (int j=0; j<tempAsset_array.count; j++) { 

        if([l_dressName rangeOfString:ImageName].location!=NSNotFound) 
        { 
         NSLog(@"Matched"); 
         isFound = YES; 

         break; 
        } 
       } 
      } 
+0

정말 확실합니까? 코드를 다시 읽으십시오. – xqterry

+1

잘못 읽으십시오. 어쨌든, 그것은 여전히 ​​코드 덤프 이상이 아니며 대답이 아닙니다. – CodaFi

2

당신은 enumerationBlocks와 동일한 기능을 수행 할 수 있습니다. 이것은 배열의 배열을 가지고 있다고 가정합니다.

__block BOOL containsDress = NO; 
[a_AllClothing enumerateObjectsUsingBlock:^(NSArray * clothes, NSUInteger idx, BOOL *firstStop) { 
    [clothes enumerateObjectsUsingBlock:^(NSString * cloth, NSUInteger idx, BOOL *seconStop) { 
     if ([cloth isEqualToString:l_dressName]) { 
      *firstStop = YES; 
      *seconStop = YES; 
      containsDress = YES; 
     } 
    }]; 
}]; 
+0

죄송합니다. 잘못 읽었습니다. +1 – CodaFi