Swift:PhotoLibrary 删除资产并取得进展

Posted

技术标签:

【中文标题】Swift:PhotoLibrary 删除资产并取得进展【英文标题】:Swift: PhotoLibrary delete assets and get progress 【发布时间】:2019-07-30 07:15:10 【问题描述】:

我需要显示从照片库中删除照片和视频的进度。如果照片很少 - 删除可能需要几秒钟,但如果有 1000 张照片 - 则需要几分钟。所以,我需要以某种方式展示进步。我该怎么做?

我的代码

    phphotoLibrary.shared().performChanges(
        PHAssetChangeRequest.deleteAssets(assets as NSFastEnumeration)
    , completionHandler:  success, error in
        DispatchQueue.main.async 
        if let error = error 
            print(error.localizedDescription)
        
        
    )

【问题讨论】:

【参考方案1】:

您可以注册PHPhotoLibraryChangeObserver,顾名思义,观察照片库的变化。你可以阅读更多关于它的信息here。

PHPhotoLibraryChangeObserver 注意到更改时,您可以请求该更改的详细信息以了解要做什么,在这种情况下,您需要上传您的用户界面。

你可以阅读更多关于PHPhotoLibraryChangeObserverhere的信息。

编辑:作为对评论指出该观察者的触发频率不足以更新 UI 状态的评论的回应,您可以尝试不同的方法,例如定期查询所有照片(可能每隔几秒在重复计时器上查询一次),然后得到结果的计数。然后当操作(在这种情况下,删除项目)完成时,您可以使计时器无效。

【讨论】:

我试过了,要删除 100 张照片,它被调用了 3 次 @Haloo 看到我编辑的答案,这可能是需要研究的东西。

以上是关于Swift:PhotoLibrary 删除资产并取得进展的主要内容,如果未能解决你的问题,请参考以下文章

Swift如何手动设置photoLibrary和相机授权?

如何在 Swift 中从 CloudKit 中删除资产?

从资产中获取实际图像名称

iOS 8 照片库 - 使用 PHAssetChangeRequest 添加资产时出错

R:提取具有NA的行,删除那些满足条件A并取那些满足条件B的平均值

swift Swift - CloudKit - 使用资产和位置字段