如何从 PHAssetCollection 中删除图像?

Posted

技术标签:

【中文标题】如何从 PHAssetCollection 中删除图像?【英文标题】:How to delete image from PHAssetCollection? 【发布时间】:2016-02-05 07:16:08 【问题描述】:

我的应用程序中有 PHAssetCollection,其中包含所有相册应用程序。

问题是我可以从所有照片中删除图像,但不能从相机胶卷、收藏夹、屏幕截图等中删除图像。

请帮我从 PHAssetCollection 中删除。

这是我删除图像的代码。

// Enable the trash button if the asset can be deleted.
    BOOL isTrashable = NO;
   if (self.assetCollection) 
    isTrashable = [self.assetCollection canPerformEditOperation:PHCollectionEditOperationRemoveContent];
 
   else 
     isTrashable = [self.asset canPerformEditOperation:PHAssetEditOperationDelete];

   self.trashButton.enabled = isTrashable;
   [self updateImage];

【问题讨论】:

【参考方案1】:

来自Apple developer forum的参考

[[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));
        ];

 // Delete asset from library
        [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^
            [PHAssetChangeRequest deleteAssets:@[self.asset]];
         completionHandler:completionHandler];

确保 isTrashable = YES

【讨论】:

developer.apple.com/library/ios/samplecode/UsingPhotosFramework/…(您必须是注册开发人员才能访问此代码)我使用此代码请让我建议我必须将上面的代码放在哪里@Vvk Aghera ==>> 资产:self.albumAssetsFetchResult;你能在这份声明中告诉我我必须分配哪些资产吗? 请你解决这个问题。您的答案已经在演示项目中,但您能告诉我为什么它不起作用吗? @MiteshDobareeya 请在 AAPLAssetViewComtroller.M 行号:265--278 中查看演示代码。它已经工作了。 但它只允许您从所有照片中删除图像。如果您想从相机胶卷中删除图像,则不允许删除【参考方案2】:

注释上面的代码并设置

self.trashbutton.enable=YES;

从相机角色中删除的图像也从所有照片中删除。

【讨论】:

以上是关于如何从 PHAssetCollection 中删除图像?的主要内容,如果未能解决你的问题,请参考以下文章

删除 PHAssetCollection (Swift)

如何从 PHAssetCollection 正确获取自定义专辑

创建相册的过滤 PHAssetCollection 失败

使用 PHFetchOptions.predicate 从 PHAssetCollection 获取 PHAsset 的问题

如何编辑或重命名 PHAssetCollection LocalizedTitle?

何时使用 PHAsset、PHCollection、PHAssetCollection 和 PHCollectionList