如何从相册中删除资产而不删除照片应用中的资产/照片?

时间:2015-02-06 03:55:59

标签: ios objective-c alassetslibrary photosframework

我想以编程方式从相册中删除重复的资源(照片不是)。我可以使用Photos framework

删除相册

我想知道如何从相册中删除资源而不从照片应用中完全删除它。我想要使​​用多个地方,例如将资产从一个专辑移动到另一个专辑等等

相册可以根据我的创建进行编辑。

有没有办法在iOS 6或iOS 7的设备中执行此操作?

2 个答案:

答案 0 :(得分:2)

在iOS 8及更高版本中,您可以使用以下代码从相册中删除照片,而无需从照片应用中完全删除照片。

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
    PHAssetCollectionChangeRequest *request = [PHAssetCollectionChangeRequest
        changeRequestForAssetCollection:self.myAlbum
                                 assets:self.albumAssetsFetchResult];
    [request removeAssets:@[asset]];

} completionHandler:^(BOOL success, NSError *error) {
    NSLog(@"Finished removing asset from the album. %@", (success ? @"Success" : error));
}];

代码在以下链接中提供: https://developer.apple.com/library/prerelease/ios/documentation/Photos/Reference/PHAssetCollectionChangeRequest_Class/index.html

答案 1 :(得分:0)

您可以将该图片的imageData设置为nil,这样就可以删除图片。

ALAssetsLibrary *lib = [ALAssetsLibrary new];
[lib enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
     if(group == nil)
     {
          return ;
     }

     if([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:@"YourAlbumNam"])
    {
        [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop)
        {
             if(asset.isEditable)
             {
                 if([[asset valueForProperty:ALAssetPropertyAssetURL] isEqual:yourAssetURL] )
                 {
                       [asset setImageData:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error)
                       {
                             // Check for error
                       }];
                 }
              }
        }];
    }                
failureBlock:^(NSError *error)
{

}];