从照片库中删除图像

时间:2018-02-13 12:21:05

标签: ios swift image photo-gallery

在我的应用程序中,我有一个功能可以将图像保存到照片库中创建的自定义集合相册中:

func save(image: UIImage) {
    if assetCollection == nil {
        return
    }
    PHPhotoLibrary.shared().performChanges({
        let assetChangeRequest = PHAssetChangeRequest.creationRequestForAsset(from: image)
        let assetPlaceHolder = assetChangeRequest.placeholderForCreatedAsset
        let albumChangeRequest = PHAssetCollectionChangeRequest(for: self.assetCollection)
        let enumeration: NSArray = [assetPlaceHolder!]
        albumChangeRequest!.addAssets(enumeration)
    }, completionHandler: nil)
}

UIImages由用户在之前的VC中创建。此外,它们将保存到文档目录中,然后在我的应用程序中显示在单独VC上的集合视图中。

稍后用户可以选择所需的照片,然后在新的VC中显示并通过单击“废纸篓标签栏”将其删除。按下按钮后,图像将从文档目录中删除,因此它也会从集合视图中消失。

我想要达到的目的是同时从照片库中删除这张照片。因此,当用户单击“废纸篓”按钮时,也会删除“文档目录”和“照片库”中的所选照片。

到目前为止我所取得的成就 - 创建了带有图片网址的功能,并根据该网址删除了项目,就像我在文档目录中所做的那样:

func deleteSelectedPhotoFromGallery() {
    PHPhotoLibrary.shared().performChanges({
        let imageAssetToDelete = PHAsset.fetchAssets(withALAssetURLs: self.loadURL() as! [URL], options: nil)
        PHAssetChangeRequest.deleteAssets(imageAssetToDelete)
    })
}

编辑:这就是我如何获取网址:

func loadURL() -> [NSURL?]? {
    let retrievedData = UserDefaults.standard.object(forKey: DefaultKeys.imagesURL.rawValue) as? [String]
    return retrievedData?.map { NSURL(string: $0) }
}

问题:

  • fetchAssets(withALAssetURLs) - 将不推荐使用,而是使用什么?
  • 如何获取保存到PhotoLibrary的图片网址?

基本上,我需要一些方法来删除之前保存的照片库中的图像。我想知道你是否可以以某种方式检测保存时的图像URL或路径,然后将其路径存储到UserDefaults中,然后使用它的路径或URL删除它。

之前有关于此问题的问题,但他们使用ImagePicker检测图像URL以及用objc编写的位置,但我想在swift中使用解决方案而不使用ImagePicker。

感谢。

1 个答案:

答案 0 :(得分:1)

  

fetchAssets(withALAssetURLs) - 将被弃用,改为使用什么?   如何获取保存到PhotoLibrary的图像URL?

你没有。这就是它被弃用的原因!您获得资产localIdentifier。这允许您访问资产并在以后删除它。

您的完成处理程序为空。那就是问题所在。编写完成处理程序并从占位符获取本地标识符。