SwiftData: "backing data was detached from a context without resolving attribute faults" when deleting a model shown in a @Query driven list

A dashboard screen lists cameras from a @Query. Each row is a child view that holds the model instance:

@Query(filter: #Predicate<CameraModel> { $0.device?.isSelected == true }) private var cameras: [CameraModel]

List { ForEach(cameras) { camera in CameraCellView(camera: camera) //holds let camera: CameraModel } } The row reads model attributes in its body (camera.name, camera.cameraType, camera.thumbnailData). It also has a 1-second timer that updates a "last snapshot" subtitle, so it redraws on its own.

A settings screen is pushed on top of the dashboard in the same NavigationStack. It deletes a camera like this:

camera.modelContext?.delete(camera) try? camera.modelContext?.save()

Immediately after the delete, the app crashes in the dashboard row's body when it reads an attribute:

Fatal error: This backing data was detached from a context without resolving attribute faults: PersistentIdentifier(...) - \CameraModel.cameraType

This is not 100% reproducible.

The whole error message is: Thread 1: Fatal error: This backing data was detached from a context without resolving attribute faults: PersistentIdentifier(id: SwiftData.PersistentIdentifier.ID(backing: SwiftData.PersistentIdentifier.PersistentIdentifierBacking.managedObjectID(0x8f8ff6c009fee652 <x-coredata://65230C45-6F86-4B64-AEAB-6AAA9CB72D24/CameraModel/p16>))) - \CameraModel.cameraType

I understand this is due to a small gap where the SwiftUI view is rerendered before Query updates the view because of the deletion and the SwiftUI view points at a nonexistent SwiftData record. I'm just wondering what's a good way of avoiding that? SwiftData is used project-wide so this can potentially happen on nearly every view.

SwiftData: "backing data was detached from a context without resolving attribute faults" when deleting a model shown in a &#64;Query driven list
 
 
Q