SwiftUI - 没有初始值的状态

SwiftUI - State without an initial value

我有一个在我看来声明的状态

@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,如下所示:

NavigationLink(destination: PersonDetailsView(viewModel: PersonViewModel(person: selectedPerson)), isActive: self.$selected) {
      EmptyView()
}.hidden()

一切正常,但我必须在初始化结构之前将默认值设置为“selectedPerson”状态,即使没有选择任何人。有没有办法绕过这个,而不给“selectedPerson”状态一个默认的“虚拟”值。 谢谢:)

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

@State var selectedPerson: Person?

但是你也必须在所有使用它的地方处理这个可选的,比如

if nil != selectedPerson {
   NavigationLink(destination: 
      PersonDetailsView(viewModel: PersonViewModel(person: selectedPerson!)), // << !!
                              isActive: self.$selected) {
      EmptyView()
   }.hidden()
}