2011-03-28 46 views
2

我试图通过ALAssetsLibrary访问iPhone的相册照片图像。我可以访问所有的相册,并获得模拟器每个图像的资产URL,通过下面的代码:ALAssetsLibrary不检索物理iOS 4.1 iPod设备中的图像URL?

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

它适用于iOS 4.0模拟器,即让所有的图像的URL(例如如预期:assets-library://asset/asset.JPG?id=1000000002&ext=JPG )。但它不会在iPod 4.1设备上检索图像URL。这里可能是什么问题?有人可以帮我修复,这样的代码也可以在iPod上工作吗?我完全困惑。

谢谢!

+0

请正确格式化代码。你尝试使用enumerateGroupsWithTypes:ALAssetsGroupAll – jarryd 2011-03-28 17:23:04

回答

1

尝试我在我的评论或以下

library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos 

这也取决于你想要什么照片提及。

+0

优秀!非常感谢,现在按预期工作。 – Getsy 2011-03-28 17:31:22

+0

然后请接受答案,并为未来的读者提供评论。 :) – jarryd 2011-03-28 17:31:56

+0

另一件需要注意的是,它看起来像这样[self.activity stopAnimating]; [self.activity setHidden:YES];正在以您现在拥有代码的方式为您检索的每项资产进行调用。 – jarryd 2011-03-28 17:36:55

0

空隙(^ assetGroupEnumerator)(结构ALAssetsGroup *,BOOL *)= ^(ALAssetsGroup *基团,BOOL *停止) {

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

/*使* /组=无; //否则被列举三次。 };