2013-08-29 21 views
7

'u kullanarak videoları nasıl edinebilirim Aşağıdaki kitap parçasından fotoğraf kitaplığından video çekmeye çalışıyorum.Ama ayrıca resim listesi de alıyorum.Ne tüm videoların listesini alabilirim? Neyi yanlış yapıyorum?Sadece ALAssetsLibrary

NSMutableArray* assetURLDictionaries = [[NSMutableArray alloc] init]; 
xy =[[NSMutableArray alloc]init]; 
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 

void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) { 
    if(result != nil) { 
     if([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypeVideo]) { 
      [assetURLDictionaries addObject:[result valueForProperty:ALAssetPropertyURLs]]; 

      NSLog(@"result is:%@",result); 
      NSLog(@"asset URLDictionary is:%@",assetURLDictionaries); 
      NSURL *url= (NSURL*) [[result defaultRepresentation]url]; 

      [library assetForURL:url 
        resultBlock:^(ALAsset *asset) { 
         [xy addObject:[UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]]]; 
         NSLog(@" xy is:%@",xy); 
         image =[ [UIImageView alloc ] initWithImage:[xy objectAtIndex:0]]; 
         NSLog(@"image is:%@",image); 
        } 
        failureBlock:^(NSError *error){ NSLog(@"test:Fail"); } ]; 
     } 
    } 
}; 

NSMutableArray *assetGroups = [[NSMutableArray alloc] init]; 
void (^ assetGroupEnumerator) (ALAssetsGroup *, BOOL *)= ^(ALAssetsGroup *group, BOOL *stop) { 
    NSLog(@"hello"); 
    if(group != nil) { 
     [group enumerateAssetsUsingBlock:assetEnumerator]; 
     [assetGroups addObject:group]; 
     NSLog(@"Number of assets in group :%d",[group numberOfAssets]); 
     NSLog(@"asset group is:%@",assetGroups); 
    } 
}; 

assetGroups = [[NSMutableArray alloc] init]; 

[library enumerateGroupsWithTypes:ALAssetsGroupAll 
         usingBlock:assetGroupEnumerator 
        failureBlock:^(NSError *error) {NSLog(@"A problem occurred");}]; 

cevap

17

Numaralandırma sırasında gruba bir ALAssetsFilter eklemeniz gerekir. Burada temel bir örnek: İleride

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

[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) { 
    if (group) { 
     [group setAssetsFilter:[ALAssetsFilter allVideos]]; 
     [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop){ 
      if (asset){ 

       NSDictionary *meta = [[asset defaultRepresentation] metadata]; 

      } 
     }]; 
    } 
} failureBlock:^(NSError *error) { 
    NSLog(@"error enumerating AssetLibrary groups %@\n", error); 
}]; 

, available filters şunlardır:

- allPhotos 
- allVideos 
- allAssets 
+0

Not ki ([docs] göre https://developer.apple.com/library/ios/documentation /AssetsLibrary/Reference/ALAssetsLibrary_Class/Reference/Reference.html#//apple_ref/doc/constant_group/Types_of_Asset) 'ALAssetsGroupAll' "' ALAssetsGroupLibrary' haricinde hep birlikte grup türleri VEYA işlemi aynı" olur. ITunes'u da isterseniz, 'ALAssetsGroupAll | ALAssetsGroupLibrary', "iTunes'dan senkronize edilen tüm varlıkları içerir". – bcattle