как запретить ALAssetsLibrary получать миниатюры видео с изображениями библиотеки?

Я использую следующий код для доступа ко всем изображениям ALAssetsLibrary, но ALAssetsLibrary дает мне сохраненные эскизы видео с сохраненными изображениями из ALAssetsLibrary. как я могу предотвратить это с помощью кода, чтобы я мог получать только сохраненные изображения?

//Method to get all images from devices library
 - (NSMutableArray*)getAllImagesFromLibrary
 {
     //get all images from image library
     void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
     if(result != NULL) {
         //Insert objects into array
         [self.arrOfAllImages addObject:result];
        }
     };

     void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) =  ^(ALAssetsGroup *group, BOOL *stop) {
     if(group != nil) {
         [group enumerateAssetsUsingBlock:assetEnumerator];
        }
     };

     //NSMutableArray allacation
     NSMutableArray *arrOfAllImage = [[NSMutableArray alloc] init];
     static dispatch_once_t pred = 0;
     static ALAssetsLibrary *library = nil;
     dispatch_once(&pred, ^{
         library = [[ALAssetsLibrary alloc] init];
     });

     [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
     usingBlock:assetGroupEnumerator
     failureBlock: ^(NSError *error) {
         NSLog(@"Failure");
     }];

     return arrOfAllImage;

}

person BADRI    schedule 27.02.2013    source источник


Ответы (3)


Проверьте свой результат, если он будет отображать добавление в массив, иначе нет

void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
    if(result != NULL) {
        if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto])
        {
            //Insert objects into array
            [self.arrOfAllImages addObject:result];
        }
    }
};
person Rajneesh071    schedule 27.02.2013

Установите фильтр перед перечислением :

[group setAssetsFilter: [ALAssetsFilter allPhotos]];
person BlueVoodoo    schedule 27.02.2013

Вы можете упомянуть многие типы объектов через ALAssetsGroupType.

Они есть

   ALAssetsGroupLibrary        
   ALAssetsGroupAlbum          
   ALAssetsGroupEvent          
   ALAssetsGroupFaces          
   ALAssetsGroupSavedPhotos    
   ALAssetsGroupPhotoStream    
   ALAssetsGroupAll  

1

Библиотека группы ALAssetsGroup

Группа «Библиотека», в которую входят все ресурсы, синхронизированные с iTunes.

Доступно в iOS 4.0 и более поздних версиях.

Заявлено в ALAssetsLibrary.h.

2

ALAssetsGroupAlbum

Все альбомы, созданные на устройстве или синхронизированные с iTunes, за исключением Photo Stream или Shared Streams.

Доступно в iOS 4.0 и более поздних версиях.

Заявлено в ALAssetsLibrary.h.

3

ALAssetsGroupEvent

Все события, в том числе созданные во время импорта Camera Connection Kit.

Доступно в iOS 4.0 и более поздних версиях.

Заявлено в ALAssetsLibrary.h.

4

ALAssetsGroupFaces

Все альбомы лиц синхронизированы с iTunes.

Доступно в iOS 4.0 и более поздних версиях.

Заявлено в ALAssetsLibrary.h.

5

ALAssetsGroupSavedPhotos

Все фото в Фотопленке.

Доступно в iOS 4.0 и более поздних версиях.

Заявлено в ALAssetsLibrary.h.

6

**ALAssetsGroupPhotoStream**

The PhotoStream album.

In iOS 6.0 and later, this also includes Shared Streams.

Available in iOS 5.0 and later.

Declared in `ALAssetsLibrary.h`.

7

ALAssetsGroupAll

То же самое, что и объединение всех типов групп, кроме ALAssetsGroupLibrary.

Доступно в iOS 4.0 и более поздних версиях.

Заявлено в ALAssetsLibrary.h.

Подробнее см. developer.apple

Пример:

 [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
     usingBlock:assetGroupEnumerator
     failureBlock: ^(NSError *error) {
         NSLog(@"Failure");
     }];
person Shamsudheen TK    schedule 28.02.2013