2011-03-28 47 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]; 

/*使* /組=無; //否則被列舉三次。 };