2014-10-01 139 views
0

林枚举ALAssetsLibrary知道我的组照片库有,如何知道什么时候结束块列举ALAssetsLibrary

我怎样才能知道什么时候停止块枚举?

NSMutableArray *albumsArray = [NSMutableArray array]; 

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 

[library enumerateGroupsWithTypes:ALAssetsGroupAll 
         usingBlock: ^(ALAssetsGroup *group, BOOL *stop){ 
          if ([group valueForProperty:ALAssetsGroupPropertyName] != nil) { 
           [albumsArray addObject:[group valueForProperty:ALAssetsGroupPropertyName]]; 
          } 
          NSLog(@"tu arraya :: %@", albumsArray); 
          //tha pics? 
          [group enumerateAssetsUsingBlock: ^(ALAsset *result, NSUInteger index, BOOL *stop){ 
           // ---> ALAsset: 
           NSLog(@"  Stop? %@", (stop ? @"YES" : @"NO")); 
          }]; 
         } 
        failureBlock: ^(NSError *error) { 
         NSLog(@"Failure"); 
        }]; 
NSLog(@"tu arraya 1:: %@", albumsArray); 
+0

它在文档中告诉你'enumerateGroupsWithTypes:usingBlock:failureBlock:'。 – rmaddy 2014-10-01 03:11:53

+0

为什么要投票?这是显而易见的吗?,很高兴躲在投票后面,并且没有反馈! – MaKo 2014-10-01 03:14:44

+0

您有反馈意见。答案在该方法的文档中。 – rmaddy 2014-10-01 03:15:44

回答

2

检查if (group == nil)之后的enumerateAssetsUsingBlock声明。

见下文:

NSMutableArray *albumsArray = [NSMutableArray array]; 

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 

[library enumerateGroupsWithTypes:ALAssetsGroupAll 
         usingBlock: ^(ALAssetsGroup *group, BOOL *stop){ 
          if ([group valueForProperty:ALAssetsGroupPropertyName] != nil) { 
           [albumsArray addObject:[group valueForProperty:ALAssetsGroupPropertyName]]; 
          } 
          NSLog(@"tu arraya :: %@", albumsArray); 
          //tha pics? 
          [group enumerateAssetsUsingBlock: ^(ALAsset *result, NSUInteger index, BOOL *stop){ 
           // ---> ALAsset: 
           NSLog(@"  Stop? %@", (stop ? @"YES" : @"NO")); 
          }]; 

          // this is the end of enumeration 
          if (group == nil) 
          { 
           NSLog(@"THE END!!!"); 
          } 
         } 
        failureBlock: ^(NSError *error) { 
         NSLog(@"Failure"); 
        }]; 
NSLog(@"tu arraya 1:: %@", albumsArray); 

而且,你真的应该想想分手的块使事情变得更容易阅读。例如:

NSMutableArray *albumsArray = [NSMutableArray array]; 
ALAssetsLibrary *library = [BMBAssetManager defaultAssetsLibrary]; 

void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = 
    ^(ALAsset *result, NSUInteger index, BOOL *stop) 
    { 
     // ---> ALAsset: 
     NSLog(@"  Stop? %@", (stop ? @"YES" : @"NO")); 
    }; 

void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) = 
    ^(ALAssetsGroup *group, BOOL *stop){ 
     if ([group valueForProperty:ALAssetsGroupPropertyName] != nil) { 
      [albumsArray addObject:[group valueForProperty:ALAssetsGroupPropertyName]]; 
     } 
     NSLog(@"tu arraya :: %@", albumsArray); 
     //tha pics? 
     [group enumerateAssetsUsingBlock:assetEnumerator]; 

     // this is the end of enumeration 
     if (group == nil) 
     { 
      NSLog(@"THE END!!!"); 
     } 

    }; 

[library enumerateGroupsWithTypes:ALAssetsGroupAll 
         usingBlock:assetGroupEnumerator 
        failureBlock: ^(NSError *error) { 
         NSLog(@"Failure"); 
        }]; 
相关问题