在Swift中,我有一个连接到FireStore的viewModel,当我调用它的函数fetchData时,它成功地返回了许多文档。但是,当我尝试使用索引引用文档时,会出现"超出范围"错误。
在这个例子中,文档数返回为1,所以我看不出为什么下一个Text语句不起作用。可能是时间问题吗?意思是,文件在那一刻实际上是可用的。
@ObservedObject var testViewModel = GetTestViewModel()
var body: some View {
VStack {
Text("Number of tests = (testViewModel.test.count)") // Returns 1
Text("Test Level = (testViewModel.test[0].level)")
// Allways crashes with Fatal error: Index out of range
}
.onAppear() {
// This should and does return one record
testViewModel.fetchdata(testId: "4Yv7iT2BjHCKNzr4umpG")
LoadNewTest()
}
}
func LoadNewTest() {
print("Load Test")
if !testViewModel.test.isEmpty {
print("Number of tests = (testViewModel.test.count)") // Never prints
}
}
当count
为零时,您可能看不到对body
的第一个请求,因此最好显式添加条件,如
VStack {
Text("Number of tests = (testViewModel.test.count)") // Returns 1
if !testViewModel.test.isEmpty {
Text("Test Level = (testViewModel.test[0].level)")
}
}