代码之家  ›  专栏  ›  技术社区  ›  Sergey Grischyov

获取ALAssetGroup中的照片和视频计数

  •  1
  • Sergey Grischyov  · 技术社区  · 13 年前

    我这样列举我的ALAssetGroup:

    ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
    
        if (group.isEditable){
            NSLog(@"group is %@", group);
            [group setAssetsFilter:[ALAssetsFilter allPhotos]];
            [groups addObject:group];
        }
    

    这会过滤组,使其仅包含照片 .numberOfAssets 。不过,我想 二者都 照片数量 视频计数。如果不第二次列举整件事,我该怎么做?

    2 回复  |  直到 11 年前
        1
  •  1
  •   Silviu St    13 年前
    ALAssetsLibrary *al = [[ALAssetsLibrary alloc]init];
        [al enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop)
         {
             if ([[group valueForProperty:ALAssetsGroupPropertyName]isEqualToString:@"MyAlbumName"]) {
                 NSLog(@"in album");
                 int nrAssets=[group numberOfAssets];
    
                 __block int countVideo;
                 __block int countPhoto;
    
                countPhoto=countVideo=0;
                 [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop)
                  {
    
                     if ([[asset valueForProperty:ALAssetPropertyType]isEqualToString:ALAssetTypeVideo]) {
                              NSLog(@"eVideo ... count++");
                             countVideo++;
    }
                    else if(asset valueForProperty:ALAssetPropertyType]isEqualToString:AlAssetTypeVideo]){
                           NSLog(@"EPhoto ... ");
                           countPhoto++;
    }
    
           }];
             }
    
    
         }
                        failureBlock:^(NSError *error) { NSLog(@"Boom!!!");}
         ];
    

    我对特定的相册使用此代码,但您可以对所有相册进行修改,希望它能帮助您:)

        2
  •  0
  •   Zulander    12 年前

    下面的代码块统计所有视频和照片:

    __block int videoCount = 0;
    __block int photoCount = 0;
    ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc]init];
    [assetLibrary
     enumerateGroupsWithTypes:ALAssetsGroupAll
     usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
         if (group == nil) {
             // enumeration complete
             return;
         }
         int total = group.numberOfAssets;
         [group setAssetsFilter:[ALAssetsFilter allVideos]];
         int groupVideoCount = group.numberOfAssets;
         videoCount += groupVideoCount;
         photoCount += total - groupVideoCount;
     }
     failureBlock:^(NSError *error) {
         // Handle error
     }];