开发者

ALAssetsLibrary doesn't retrieve image URL's in physical iOS 4.1 iPod device?

I am trying to access iPhone's photo album photo images through ALAssetsLibrary. I could access all the photo albums and get the asset URL of each images on Simulator, via the following code:

- (void)viewDidLoad
{
    [super viewDidLoad];

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

            // assets is a NSMutableArray..            
            [assets addObject:result];

            // Here storing the asset's image URL's in NSMutablearray urlStoreArr
            NSURL *url = [[result defaultRe开发者_如何学编程presentation] url];
            [urlStoreArr addObject:url]; 
        }
    };

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

        [self.activity stopAnimating];
        [self.activity setHidden:YES];
    };

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

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

    urlStoreArr = [[NSMutableArray alloc] init];
}

-(void) GetURLImages
{
    for (int i=0; i<[urlStoreArr count]; i++)
    {
        // To get the each image URL here...
        NSString *str = [urlStoreArr objectAtIndex:i];
        NSLog(@"str: %@",str);
    }
}

It works as expected on iOS 4.0 Simulator, i.e, getting all the images URL's (ex: assets-library://asset/asset.JPG?id=1000000002&ext=JPG). But it doesn't retrieve image URL's on iPod 4.1 device. What could be the problem here? Can someone please help me fix so the code could also work on iPod? I'm totally confused.

Thank you!


Try what I mentioned in my comment or the following

library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos

It also depends what photos you want.


void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) {

if(group != nil) {
    [group enumerateAssetsUsingBlock:assetEnumerator];
}
[self.activity stopAnimating];
[self.activity setHidden:YES];

/* make */ group=nil;//otherwise it is enumerated thrice. };

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜