首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ALAssetsGroup enumerateAssetsUsingBlock:不退还资产

ALAssetsGroup enumerateAssetsUsingBlock:不退还资产
EN

Stack Overflow用户
提问于 2012-01-19 20:51:45
回答 1查看 2.4K关注 0票数 0

我已经实现了一个带有两个UIViewController子类的自定义图库:AlbumControllerPhotosController。第一个显示所有图库相册,第二个显示选定相册中的所有照片。

一切正常,除了当我从远程存储库(目前是Flickr)下载图片到Camera Roll相册时。在这种情况下,每当我转到AlbumController时,我都会看到所有相册,并且Camera Roll的相册封面会用最后下载的图像刷新,但当我转到Camera Roll相册的PhotosController时,我什么也看不到。如果我在下载完所有图像后进入Camera Roll相册,则会看到所有图像。

PhotosController.h:

代码语言:javascript
复制
ALAssetsGroup *album;

PhotosController.m:

代码语言:javascript
复制
-(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];
}

在另一个类中,我下载图像并将它们添加到库中,如下所示:

代码语言:javascript
复制
UIImage *img = [UIImage imageWithData:data];
UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);    

有人能解释为什么在向ALAssetsGroup写入图像时enumerateAssetsUsingBlock:不返回任何资产吗

在这种情况下,是否有从Camera Roll相册读取资源的解决方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-20 23:27:59

问题是,每次您在电话画廊中保存新图像时,对Camera Roll ALAssetsGroup的引用都会更改,并且不再有效(虽然不是空的)。

在我的例子中,我下载并写入了许多图片,所以每次我试图在我的图库中查看它们时,对相册的引用都发生了变化,因此,enumerateAssetsUsingBlock:没有返回任何内容。

为了避免这个问题,我首先将所有图片下载到一个文件夹中,然后将图片复制到图片库中,并使用UIAlertView消息阻止应用程序,但没有通知该过程的按钮。通过这个实现,我解决了这个问题。

如果你想同时保存一些图像,你可能会发现另一个问题。看看这个问题和答案:https://stackoverflow.com/a/8177014

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8926320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档