我已經實現了一個包含兩個UIViewController
子類的自定義畫廊:AlbumController
和PhotosController
。第一個顯示所有圖庫相冊,第二個顯示所選相冊中的所有照片。ALAssetsGroup enumerateAssetsUsingBlock:不返回資產
一切工作正常,除了當我從遠程存儲庫(Flickr在此刻)下載圖像到相機膠捲相冊。在這種情況下,每當我轉到AlbumController
時,我都會看到所有相冊,並且相機膠捲的相冊封面將刷新上次下載的圖像,但是當我轉到相機膠捲相冊的PhotosController
時,我看不到任何東西。如果我在下載完所有圖像後進入相機膠捲相冊,那麼我可以看到它們全部。
PhotosController.h:
ALAssetsGroup *album;
PhotosController.m:
-(void) viewDidAppear:(BOOL)animated{
if(albumHasChanged){
[self performSelectorInBackground:@selector(prepareAlbumPhotos)
withObject:nil];
[self performSelector:@selector(reloadPhotosTableView)
withObject:nil
afterDelay:.5];
albumHasChanged = NO;
}
}
#pragma mark - Private methods
-(void)prepareAlbumPhotos {
[albumAssets removeAllObjects];
@autoreleasepool {
[self.album enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
{
// No assets are returned while images are being downloaded!!
// ... albumAssets gets filled
}];
[self reloadPhotosTableView];
}
}
-(void) reloadPhotosTableView{
[photosTableView reloadData];
}
內的另一個類我下載圖像,並將它們添加到庫中,像這樣:
UIImage *img = [UIImage imageWithData:data];
UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);
燦任何人都可以解釋爲什麼enumerateAssetsUsingBlock:
在向其寫入圖像時不返回任何資產?
在這種情況下,是否有解決方法可以從相機膠捲相冊中讀取資源?