2013-04-01 2 views
0

부울 집합으로 ALAssetsLibrary enumerateAssets 메서드에 대한 열거 형을 어떻게 중단합니까? 루프에서 빠져 나갈 수 있을까요?사진 반복 반복 ALAssetsLibrary

CODE :

[self.library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) { 
    @try { 
     if(group != nil) { 
      @autoreleasepool { 
        int newNumberOfPhotos = [group numberOfAssets]; 
        if (self.numberOfPhotosInSavedPhotos < newNumberOfPhotos) { 
         //only new photos 

         NSRange range = NSMakeRange(self.numberOfPhotosInSavedPhotos, newNumberOfPhotos-self.numberOfPhotosInSavedPhotos); 
         NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range]; 
         [group enumerateAssetsAtIndexes:indexSet options:0 usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) { 
          @autoreleasepool { 
           if(someCondition) { 
//get out of the enumeration block (that is, exit the method) or go to complete block 
           } 

           NSString *assetType = [result valueForProperty:ALAssetPropertyType]; 
          } 
         } ]; 
       }   
      } 
     } else { 
      //enumeration ended 

     } 

    } 
    @catch (NSException *e) { 
     NSLog(@"exception streaming: %@", [e description]); 
    } 
}failureBlock:^(NSError *error){ 
    NSLog(@"Error retrieving albums stream: %@", [error description]); 
    if (error.code==-3312 || error.code==-3311) { 
    } 
}]; 
+2

하시기 바랍니다. 더 구체적이고 어디서 붙어서 도움이 필요합니까? 관련 코드를 게시하면 문제를 이해하는 데 도움이됩니다. – swiftBoy

답변

2

는 자산 열거를 중지하려면 그냥 열거 블록에 *stop = YES을 설정합니다. 당신은 외부 및 내부 열거 모두 중지하려면

, YES에 모두 정지 변수에 다른 이름을 사용하고 설정 :

[self.library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *outerStop) { 
    ... 
    [group enumerateAssetsAtIndexes:indexSet options:0 usingBlock:^(ALAsset *result, NSUInteger index, BOOL *innerStop) { 
     if (someCondition) { 
      *innerStop = YES; 
      *outerStop = YES; 
     } else { 
      // process asset 
     } 
    } 
} 

비고 :@try/@catch 블록이 정상적으로 경우 필요는 없습니다를 루프 내에 프로그래밍 오류가 없습니다.

각 그룹의 자산 수가 동일한 숫자 self.numberOfPhotosInSavedPhotos과 비교되어 "새 사진"에 대한 확인이 의심스러운 것으로 보입니다. 아마도 해당 부분을 다시 확인해야합니다.

+0

고맙습니다 :) –