【发布时间】:2020-07-12 20:41:49
【问题描述】:
我有一个奇怪的问题,如果我等待两秒钟并按下 NavigationLink,它会起作用,但如果我尝试在此之前按下它会使应用程序崩溃,我不确定我做错了什么。我要做的就是从第一个 ForEach 获取数组索引,以将其用于另一个 ForEach 循环。
在第一个结构中我已经声明了这些
@ObservedObject var vm = TripViewModel()
循环看起来像这样。我确保使用标签中的 print 和 Text 检查它实际上得到了数组索引,它确实做到了。
ForEach(vm.TripData.indices, id: \.self) { trip in
NavigationLink(
destination: TripView(tripCount: trip),
label: {
TableRow()
Text("\(trip)")
}
)
}
在第二个结构中,它声明了这些
@ObservedObject var vm = TripViewModel()
var tripCount: Int = 0
ForEach 依赖于之前的循环索引。
ForEach(vm.TripData[tripCount].Leg, id: \.self) { day in
就在这里,我得到了崩溃错误“Thread 1: Fatal error: Index out of range”
【问题讨论】:
-
如何在
TripViewModel中声明TripData -
TripData 是 ViewModel 中的 @Published 属性包装器。它将拉出我可解码的 json 中的第一个数组。
@Published var TripData = [TravelDetail]() -
legint的数组? -
Leg 是一个字典数组。这是 JSON 的样子 pastebin.com/h4H0jLza