您是否找到解决方案? 这解决了mi问题:
首先,保存你的PHFetResult<PHAsset>
如果你使用这个方法调用PHAsset.fetchAssets(with:options:)
。
之后,使用您的PHFetResult<PHAsset>
变量验证提取结果是否在photoLibraryDidChange:
方法中发生了变化。第一次调用此方法时,必须更新到集合视图或表视图。之后,你的提取结果没有改变,所以你没有什么可更新的。
这是我的全码:
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
self.fetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions)
.
.
.
extension YourViewController: PHPhotoLibraryChangeObserver {
func photoLibraryDidChange(_ changeInstance: PHChange) {
if let _fetchResult = self.fetchResult, let _ = changeInstance.changeDetails(for: _fetchResult) {
DispatchQueue.main.async {
self.getPhotos()
}
}
}
}
希望这有助于你!
您是否找到解决方案?我刚刚实现了'PHPhotoLibraryChangeObserver'协议,并在查看我的'UICollectionView'时通过截图进行测试。我注意到,当我拍摄屏幕截图时,会调用photoLibraryDidChange(_ changeInstance:PHChange)两次。 –
也在寻找答案。在我的代码中,photoLibraryDidChange被调用了大约3次。但大多数时候只是没有实际的变化 –