Доступ к видео в библиотеке с помощью AssestsLibrary Framework iPhone? - PullRequest
5 голосов
/ 16 октября 2010

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

кстати, мой iPhone - это 3G, модернизированный до iPhone 4.1 (но инфраструктура ресурсов не выдает никакой ошибки)

NSMutableArray *assets = [[NSMutableArray alloc]init];
ALAssetsLibrary *library =[[ALAssetsLibrary alloc]init];

void (^assetEnumerator)(struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
        if(result != NULL) {
                NSLog(@"See Asset: %@", result);
                [assets addObject:result];

            }
        };

    void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) =  ^(ALAssetsGroup *group, BOOL *stop) {
        if(group != nil) {NSLog(@"dont See Asset: ");
                [group enumerateAssetsUsingBlock:assetEnumerator];
            }



        };

    assets = [[NSMutableArray alloc] init];
    library = [[ALAssetsLibrary alloc] init];
    [library enumerateGroupsWithTypes:ALAssetsGroupAlbum
                           usingBlock:assetGroupEnumerator
                         failureBlock: ^(NSError *error) {
                                 NSLog(@"Failure");
                             }];

Ответы [ 4 ]

5 голосов
/ 26 октября 2010

обновление 4.1, похоже, "сломало" некоторые примеры средства выбора изображений, обратите внимание на следующие строки, которые запускаются после кода, который вы опубликовали:

NSUInteger groupTypes = ALAssetsGroupAlbum | ALAssetsGroupEvent | ALAssetsGroupFaces;
[assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:failureBlock];

Это дает нулевые активы как на моем 4.1айфон и симулятор.Однако изменение groupTypes помогает, поэтому установите

 NSUInteger groupTypes = ALAssetsGroupAll;

, и вы должны начать видеть некоторые активы.

2 голосов
/ 28 февраля 2012

Я сделал это в xCode 4.1, IOS 5:

ALAssetsGroupEnumerationResultsBlock assetEnumerator = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
    if(result != NULL) {
        NSLog(@"See Asset: %@", result);
        [assets addObject:result];

    }
};

ALAssetsLibraryGroupsEnumerationResultsBlock assetGroupEnumerator = ^(ALAssetsGroup *group, BOOL *stop) {
    if(group != nil) {NSLog(@"dont See Asset: ");
        [group enumerateAssetsUsingBlock:assetEnumerator];
    }
};

assets = [[NSMutableArray alloc] init];
library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupAlbum
                       usingBlock:assetGroupEnumerator
                     failureBlock: ^(NSError *error) {
                         NSLog(@"Failure");
                     }];

Это сработало для меня.

1 голос
/ 24 октября 2010

Double Init:

 NSMutableArray *assets = [[NSMutableArray alloc]init];
 ALAssetsLibrary *library =[[ALAssetsLibrary alloc]init];

 void (^assetEnumerator)(struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
 if(result != NULL) {
      NSLog(@"See Asset: %@", result);
      [assets addObject:result];

        }
};

void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) =  ^(ALAssetsGroup *group, BOOL *stop) {
    if(group != nil) {NSLog(@"dont See Asset: ");
            [group enumerateAssetsUsingBlock:assetEnumerator];
    }
};

   assets = [[NSMutableArray alloc] init];
   library = [[ALAssetsLibrary alloc] init**];
   [library enumerateGroupsWithTypes:ALAssetsGroupAlbum
                       usingBlock:assetGroupEnumerator
                     failureBlock: ^(NSError *error) {
                             NSLog(@"Failure");
                         }];
0 голосов
/ 27 февраля 2012

Я использую ELC Image Picker Controller, и он уже использует ALAssetsGroupAll и все еще не показывает видео.

I решено , добавив фильтр активов. Вы можете ограничиться видео, фотографиями или обоими. Я предполагаю, что фотографии только по умолчанию. Пожалуйста, рассмотрите следующую строку, если вышеперечисленное не помогло.

[assetGroup setAssetsFilter: [ALAssetsFilter allAssets]];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...