Environment: iOS 16 beta 2, beta 3. iPhone 11 Pro, 12 mini
Steps to reproduce:
- Subscribe to Photo Library changes via
PHPhotoLibraryChangeObserver
, put some logs to track inserted/deleted objects:
func photoLibraryDidChange(_ changeInstance: PHChange) {
if let changeDetails = changes.changeDetails(for: allPhotosFetchResult) {
for insertion in changeDetails.insertedObjects {
print("🥶 INSERTED: ", insertion.localIdentifier)
}
for deletion in changeDetails.removedObjects {
print("🥶 DELETED: ", deletion.localIdentifier)
}
}
}
- Save a photo to camera roll with
PHAssetCreationRequest
- Go to the Photo Library, delete the newly saved photo
- Come back to the app and watch the logs:
🥶 INSERTED: 903933C3-7B83-4212-8DF1-37C2AD3A923D/L0/001
🥶 DELETED: 39F673E7-C5AC-422C-8BAA-1BF865120BBF/L0/001
Expected result: localIdentifier
of the saved and deleted asset is the same string in both logs.
In fact: It's different.
So it appears that either the localIdentifier
of an asset gets changed after successful saving, or it's a bug in the Photos
framework in iOS 16. I've checked - in iOS 15 it works fine (IDs in logs match).