2012-10-23 2 views
1

ALAssetsLibrary을 사용하여 저장된 사진의 처음 30 장을 열거합니다. 에 자산을 만들었으므로 평생 에 액세스 할 수 있습니다. 왜냐하면 평생 ALAssetsLibrary 인스턴스가 평생 ALAssets에 연결되어 있기 때문입니다. 당신이 볼 수 있듯이ALAssetsLibrary는 카메라 롤에 새 사진을 추가 한 후 동일한 에셋을 반환합니다. - 목표 c

if(!_savedAssets) _savedAssets = [[NSMutableArray alloc] init]; 
else [_savedAssets removeAllObjects]; 

if(appDelegate.library) 
{ 
    [appDelegate.library release]; 
    [appDelegate setLibrary:nil]; 
} 

appDelegate.library = [ALAssetsLibrary new]; 
__block int count = 0; 
[appDelegate.library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) { 
    NSLog(@"%d",group.numberOfAssets); 
    if(count>30) *stop = YES; 
    [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *needToStop) { 
     NSLog(@"%d", index); 
     if(count<30 && result) 
     { 
      UIImage *image = [UIImage imageWithCGImage:result.thumbnail]; 
      [_savedAssets addObject:result]; 
      [self performSelectorOnMainThread:@selector(imageManipulation:) withObject:image waitUntilDone:NO]; 
      count++; 

     } 
     else 
      *needToStop = YES; 

    }]; 
} failureBlock:^(NSError *error) { 
    NSLog(@"%@",error.description); 
}]; 

것은, 내가 내 NSMutableArray-ALAssets 30 첫 번째 썸네일에 대한 액세스 또는 fullsize 이미지를 가지고 추가 해요 : 다음은 내 코드입니다. 내 앱이 사진을 만든 후에이 사진을 카메라 롤에 저장하고 처음로드 할 때와 동일한 코드로 ALAssets을 다시로드 해 봅니다. 다시로드하기 전에 NSMutableArray에서 모든 객체를 제거하고 ALAssetsLibrary을 다시 초기화합니다. 그러나 이것은 도움이되지 않습니다. 내가 똑같을 때마다 ALAssets. 앱을 다시로드 한 후에 만 ​​새로운 ALAssets이 표시됩니다. 앱을 다시로드하지 않고 ALAssets을 다시로드하는 방법은 무엇입니까?

답변

3

ALAssetsLibraryChangedNotification에 대한 옵서버를 등록하십시오. 알림이 실행되면 애셋을 다시로드하십시오.

+0

감사합니다. –

관련 문제