Comment puis-je get uniquement les videos en utilisant ALAssetsLibrary

J'essaye d'get des videos présentes de la bibliothèque de photo du morceau de code suivant. Mais j'obtiens aussi la list d'images. Comment puis-je get la list de toutes les videos? Qu'est-ce que je fais mal?

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] isEqualToSsortingng: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");}]; 

Vous devez append un ALAssetsFilter au groupe pendant l'énumération. Voici un exemple de base:

 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); }]; 

Pour reference future, les filters disponibles sont:

 - allPhotos - allVideos - allAssets