仅提取PHAssetMediaTypeImagetypes资产收集typesPHAssetCollectionTypeSmartAlbumtypes的照片

我正在使用照片框架在iOS8中获取相册列表。 我能够使用它

PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil]; 

这给我一个所有的智能相册,包括video列表。 我如何从这个列表中筛选出video。 我只需要图像。

帮助将不胜感激。 谢谢。

你应该设置提取选项,它有一个属性predicate ,可以用来过滤video。 下面是这样做的一个例子。

 PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil]; //set up fetch options, mediaType is image. PHFetchOptions *options = [[PHFetchOptions alloc] init]; options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]]; options.predicate = [NSPredicate predicateWithFormat:@"mediaType = %d",PHAssetMediaTypeImage]; for (NSInteger i =0; i < smartAlbums.count; i++) { PHAssetCollection *assetCollection = smartAlbums[i]; PHFetchResult *assetsFetchResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:options]; NSLog(@"sub album title is %@, count is %ld", assetCollection.localizedTitle, assetsFetchResult.count); if (assetsFetchResult.count > 0) { for (PHAsset *asset in assetsFetchResult) { //you have got your image type asset. } } } 

在swift中做同样的事情:

 let fetchOptions = PHFetchOptions() fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)