我试图从下面的代码片段中获取照片库中的视频.但我也得到图像列表.如何获得所有视频的列表?我究竟做错了什么?
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");}];
解决方法
您需要在枚举期间向组中添加ALAssetsFilter.这是一个基本的例子:
ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init]; [library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group,BOOL *stop) { if (group) { [group setAssetsFilter:[ALAssetsFilter allVideos]]; [group enumerateAssetsUsingBlock:^(ALAsset *asset,BOOL *stop){ if (asset){ NSDictionary *Meta = [[asset defaultRepresentation] Metadata]; } }]; } } failureBlock:^(NSError *error) { NSLog(@"error enumerating AssetLibrary groups %@\n",error); }];
为了将来参考,available filters是:
- allPhotos - allVideos - allAssets