2015-01-22 4 views
14

Я использую фреймворки Фотографии, чтобы получить список альбомов в iOS8. Я могу это сделать, используяИзвлечь только фотографии типа PHAssetMediaTypeImage form тип сбора активов PHAssetCollectionTypeSmartAlbum

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

Это дает мне список всех интеллектуальных альбомов, включая видео. Как отфильтровать видео из этого списка. Мне нужны только изображения.

Справка будет принята с благодарностью. Благодарю.

ответ

23

Вы должны настроить параметры выборки, у него есть свойство predicate, которое может использоваться для фильтрации видео. Ниже приведен пример этого.

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. 
     } 
    } 
} 
+6

@grabler он бросает эту ошибку: 'неподдерживаемого предикат выборки параметров: MEDIATYPE == 1' –

+1

@AnishKumar, не бывает меня, из [здесь] (https://forums.developer.apple.com/thread/17498), аналогичная проблема на iOS 9.1, попробуйте перейти на iOS 9.2. – gabbler

16

Чтобы сделать то же самое в стриже:

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

 Смежные вопросы

  • Нет связанных вопросов^_^