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

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)
}

UIImage由用户在以前的VC中创建。此外,它们还会保存到文档目录中,然后在单独的VC上的收藏夹视图中显示在我的应用程序中。

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

我想要实现的是同时从照片库中删除这张照片。因此,当用户单击“废纸rash”按钮时,还要从“文档目录”和“照片库”中删除选定的照片。

到目前为止,我所取得的成就-创建了使用图像URL并根据该URL删除项目的函数,就像我对Documents Directory所做的那样:
func deleteSelectedPhotoFromGallery() {
    PHPhotoLibrary.shared().performChanges({
        let imageAssetToDelete = PHAsset.fetchAssets(withALAssetURLs: self.loadURL() as! [URL], options: nil)
        PHAssetChangeRequest.deleteAssets(imageAssetToDelete)
    })
}

编辑:那就是我如何获得URL:
func loadURL() -> [NSURL?]? {
    let retrievedData = UserDefaults.standard.object(forKey: DefaultKeys.imagesURL.rawValue) as? [String]
    return retrievedData?.map { NSURL(string: $0) }
}

问题:
  • fetchAssets(withALAssetURLs)-将不推荐使用,该怎么用呢?
  • 如何获取保存到PhotoLibrary的图像URL?

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

    以前对此问题一直存在疑问,但是他们使用ImagePicker来检测图像URL以及用objc编写的位置,但是我想在不使用ImagePicker的情况下迅速找到解决方案。

    谢谢。

    最佳答案

    fetchAssets(withALAssetURLs)-将不建议使用,改用什么?
    如何获取要保存到PhotoLibrary的图像URL?

    你没有这就是为什么不推荐使用的原因!您将获得资产的localIdentifier。这使您可以访问资产并在以后将其删除。

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

    07-24 09:37
    查看更多