0

在 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
    }
    
}
4

1 回答 1

0

您可能看不到第一个请求body何时count为零,因此最好明确添加条件,例如

VStack {
    Text("Number of tests = \(testViewModel.test.count)") // Returns 1

    if !testViewModel.test.isEmpty {
       Text("Test Level = \(testViewModel.test[0].level)")
    }
}
于 2020-09-30T15:11:09.890 回答