How do deal with NavigationSplitView not saving selection on iPhone

I have a detail view that has a @Binding var Thing, which is passed to it from the parent. It has TextFields that need to use that bound object's fields.

// Using this to pass the selection around
@Observable
class AppSelection {
    var            selectedThings:Set<Thing> = Set();
}

struct ContentView: View {
    @State private var selectionStore = AppSelection();
    
    var body: some View {
        NavigationSplitView {
            ...
        }
        content: {
            ...list that sets the selectionStore.selectedThings...
        }
        detail: {
            if !selectionStore.selectedThings.isEmpty {
                DetailView(thing:Binding(
                    get: { selectionStore.selectedThings.first! }, // Crashes here
                    set: { selectionStore.selectedThings = [$0] }
                ))
                .frame(maxHeight:.infinity, alignment:.top)
            }
            else {
                Text("Select a thing.");
            }
        }
    }
}

struct DetailView:View {
    @Binding var                    thing:Thing;
    
    var body:some View {
        TextField("Blah", $thing.name);
        TextField("Blerg", $thing.stuff);
    }
}

A crash happens when I navigate back from the DetailView in the line commented as such. I assume the NavigationSplitView is resetting the selection back to an empty state. Why the Binding given to the DetailView is even trying to get its value at that point is beyond me (so much weirdness in SwiftUI).

I've taken so many different stabs at trying to make things work differently, but I just don't understand enough about SwiftUI. Like can I make the DetailView take an optional binding? If the Thing is nil, then all the TextFields complain that they require a non-optional binding. I don't even want to show the Detail view if nothing is selected (hence the "Select a thing.").