您是否找到解決方案? 這解決了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次。但大多數時候只是沒有實際的變化 –