SwiftUI, why is object nil in clousure

Viewed 16

Bellow is a simplification of my code, where the FDocument is a

class FDocument: NSObject, ObservableObject, Codable

When i hit the button, the document is assigned proper with a new instance and isDocumentPresented is changed, however in the

.fullScreenCover(isPresented: $isDocumentPresented)

the document is suddenly nil

struct MyView: View {
    
    @State var document: FDocument?
    @State var isDocumentPresented = false
    
    var body: some View {
        List {
    
            Button("New") {
                
                document = FDocument()
                isDocumentPresented = true
                
            }
        }
        .listStyle(.insetGrouped)
        .fullScreenCover(isPresented: $isDocumentPresented) {
            DocumentEditor(document: document!) // <- NIL HERE
        }
    }
}
1 Answers

Use variant with item instead, like

        Button("New") {
            
            document = FDocument()
        //    isDocumentPresented = true    // << not needed !!
        }
    }
    .listStyle(.insetGrouped)
    .fullScreenCover(item: $document) { item in   // << valid !!
        DocumentEditor(document: item)     // << here !!
    }
Related