SwiftUI-无初始值的状态

SwiftUI-无初始值的状态,swiftui,state,default,Swiftui,State,Default,在我看来,我已经宣布了一个国家 @State var selected: Bool = false @State var selectedPerson: Person 从视图中选择“人员”时,会有一个回调,该回调将“选定”状态设置为true,并设置所选人员: MapView(viewModel: MapViewModel(people: viewModel.people)) { value in selectedPerson = viewModel.getPersonWith(nam

在我看来,我已经宣布了一个国家

@State var selected: Bool = false
@State var selectedPerson: Person
从视图中选择“人员”时,会有一个回调,该回调将“选定”状态设置为true,并设置所选人员:

MapView(viewModel: MapViewModel(people: viewModel.people)) { value in
     selectedPerson = viewModel.getPersonWith(name: value.title)
     selected = true
}
当所有这些都设置好后,它会触发如下导航链接:

NavigationLink(destination: PersonDetailsView(viewModel: PersonViewModel(person: selectedPerson)), isActive: self.$selected) {
      EmptyView()
}.hidden()
一切正常,但在初始化结构之前,我必须将默认值设置为“selectedPerson”状态,即使没有选择任何人。有没有一种方法可以绕过这个问题,而不给“selectedPerson”状态一个默认的“dummy”值。
谢谢:)

您需要将初始状态设置为可选状态,如

@State var selectedPerson: Person?
但是你也必须在所有使用它的地方处理这个可选的,比如

if nil != selectedPerson {
   NavigationLink(destination: 
      PersonDetailsView(viewModel: PersonViewModel(person: selectedPerson!)), // << !!
                              isActive: self.$selected) {
      EmptyView()
   }.hidden()
}
如果为零!=被选中的人{
导航链接(目的地:

PersonDetailsView(视图模型:PersonViewModel(人员:selectedPerson!)),//只需将其设置为可选的
@State var selectedPerson:Person?
,并使用另一个将绑定到可选值的NavigationLink初始化器。您还可以删除。已选completely@LuLuGaGa你能给我举个例子吗,这个应用程序崩溃了,因为它从可选的