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
注意到更改时,您可以请求该更改的详细信息以了解要做什么,在这种情况下,您需要上传您的用户界面。
你可以阅读更多关于PHPhotoLibraryChangeObserver
here的信息。
编辑:作为对评论指出该观察者的触发频率不足以更新 UI 状态的评论的回应,您可以尝试不同的方法,例如定期查询所有照片(可能每隔几秒在重复计时器上查询一次),然后得到结果的计数。然后当操作(在这种情况下,删除项目)完成时,您可以使计时器无效。
【讨论】:
我试过了,要删除 100 张照片,它被调用了 3 次 @Haloo 看到我编辑的答案,这可能是需要研究的东西。以上是关于Swift:PhotoLibrary 删除资产并取得进展的主要内容,如果未能解决你的问题,请参考以下文章
iOS 8 照片库 - 使用 PHAssetChangeRequest 添加资产时出错