在我的应用程序中,我有一个功能可以将图像保存到在照片库中创建的自定义收藏相册中:
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 中,并通过单击“垃圾桶”选项卡按钮将其删除。按下按钮时,图像将从文档目录中删除,因此它也会从集合视图中消失。
我想要实现的是同时从照片库中删除这张照片。因此,当用户单击“垃圾箱”按钮时,也会从文档目录和照片库中删除所选照片。
到目前为止我所取得的成果 - 创建了获取图像 URL 的函数,并根据该 url 删除项目,就像我对文档目录所做的那样:
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) - 将被弃用,用什么代替?
- 如何获取正在保存到照片库的图像 URL?
基本上,我需要一些方法来从之前保存的照片库中删除图像。我想知道您是否可以在保存图像时检测到图像 URL 或路径,然后将其路径存储到 UserDefaults 中,然后使用其路径或 URL 删除它。
之前有关于这个问题的问题,但他们使用 ImagePicker 来检测图像 URL 以及在 objc 中编写的位置,但我希望快速找到一个解决方案,而不使用 ImagePicker。
Thanks.