Accessing videos in a library using the AssestsLibrary iPhone infrastructure?

I am trying to access the video in the iPhone library using the AssetsLibrary Framework using the following code ... but when I run the application, the code does not work ... are the array assets still empty? what am I doing wrong?

By the way, my iPhone 3G has been updated to iPhone 4.1 (but the asset infrastructure does not give any error)

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");
                             }];
+5
source share
4 answers

Update 4.1 seems to have “broken” some examples of image selection, follow these lines that run after the code you posted:

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

iPhone 4.1, . ,

 NSUInteger groupTypes = ALAssetsGroupAll;

.

+5

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");
                     }];

.

+2

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");
                         }];
+1

ELC Image Picker Controller, ALAssetsGroupAll .

I decided by adding an asset filter. You can limit videos, photos, or both. I assume that only photos were by default. Please consider the following line if the above fails.

[propertyGroup setAssetsFilter: [ALAssetsFilter allAssets]];

0
source

All Articles