ALAssetsLibrary 在将新照片添加到相机胶卷后返回相同的资产 - 目标 c

Posted

技术标签:

【中文标题】ALAssetsLibrary 在将新照片添加到相机胶卷后返回相同的资产 - 目标 c【英文标题】:ALAssetsLibrary returns same assets after adding new photo to camera roll - objective c 【发布时间】:2012-10-23 19:56:24 【问题描述】:

我正在使用 ALAssetsLibrary 枚举我保存的照片中的前 30 张照片。我已经在AppDelegate 中创建了属性,以便每次我想都可以访问ALAssets,因为ALAssetsLibrary 实例的生命周期与ALAssets 生命周期相关联。 这是我的代码:

if(!_savedAssets) _savedAssets = [[NSMutableArray alloc] init];
else [_savedAssets removeAllObjects];

if(appDelegate.library)

    [appDelegate.library release];
    [appDelegate setLibrary:nil];


appDelegate.library = [ALAssetsLibrary new];
__block int count = 0;
[appDelegate.library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) 
    NSLog(@"%d",group.numberOfAssets);
    if(count>30) *stop = YES;
    [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *needToStop) 
        NSLog(@"%d", index);
        if(count<30 && result)
        
            UIImage *image = [UIImage imageWithCGImage:result.thumbnail];
            [_savedAssets addObject:result];
            [self performSelectorOnMainThread:@selector(imageManipulation:) withObject:image waitUntilDone:NO];
            count++;

        
        else
          *needToStop = YES;

    ];
 failureBlock:^(NSError *error) 
    NSLog(@"%@",error.description);
];

如您所见,我将前 30 个ALAssets 添加到我的NSMutableArray,以访问缩略图或全尺寸图像。在我的应用程序制作照片后,我将这张照片保存到相机胶卷并尝试使用与第一次加载它们时相同的代码重新加载我的 ALAssets。在重新加载之前,我从NSMutableArray 中删除所有对象,并重新初始化ALAssetsLibrary。但这无济于事。每次我得到相同的ALAssets。 我只有在重新加载应用程序后才会得到新的ALAssets。如何在不重新加载应用的情况下重新加载ALAssets

【问题讨论】:

【参考方案1】:

注册ALAssetsLibraryChangedNotification 的观察员。 当通知触发时,重新加载资产。

【讨论】:

以上是关于ALAssetsLibrary 在将新照片添加到相机胶卷后返回相同的资产 - 目标 c的主要内容,如果未能解决你的问题,请参考以下文章

从 ALAssetsLibrary 获取所有照片

打破照片 ALAssetsLibrary 的迭代

将照片应用程序前景化时更新 ALAssetsLibrary 的正确方法是啥?

尝试使用 ALAssetsLibrary 检索一组照片

如何使用 ALAssetsLibrary 访问照片而不在 iOS5 中请求位置访问?

ALAssetsLibrary 的问题