SwiftUI array.isEmpty在从Firestore收到阵列之前不显示
当前有一个VStack,其中填充了firestore中的项目,如果数据库中没有项目,我将尝试显示一条消息。它工作得非常完美,但在加载项目列表之前,它会显示“No Items”消息。我知道它还没有从db那里得到结果。有没有办法在通话结束之前不展示任何东西SwiftUI array.isEmpty在从Firestore收到阵列之前不显示,swift,firebase,google-cloud-firestore,swiftui,Swift,Firebase,Google Cloud Firestore,Swiftui,当前有一个VStack,其中填充了firestore中的项目,如果数据库中没有项目,我将尝试显示一条消息。它工作得非常完美,但在加载项目列表之前,它会显示“No Items”消息。我知道它还没有从db那里得到结果。有没有办法在通话结束之前不展示任何东西 VStack(alignment: .leading){ if itemList.isEmpty { Text(“No items”) } else { ForEach(itemList.indices, id: \.self)
VStack(alignment: .leading){
if itemList.isEmpty {
Text(“No items”)
} else {
ForEach(itemList.indices, id: \.self) { i in
Text(itemList[I].item)
}
}
}
.onAppear() { self.readItems() }
否,可以保持渲染,直到有数据;这可能需要很长时间。无论应用程序处于何种状态,代码都必须始终呈现某些内容
但您可以做的是设置一个变量来表示是否已加载数据,如
isLoaded
,最初将其设置为false
,在完成处理程序中将其设置为true,然后使用该变量来确定要显示的内容。最常见的情况是,在这种情况下,您将显示一个文本视图加载…
,然后切换到您现在所拥有的isLoaded
为真。否,您可以保持渲染,直到有数据;这可能需要很长时间。无论应用程序处于何种状态,代码都必须始终呈现某些内容
但您可以做的是设置一个变量来表示是否已加载数据,如
isLoaded
,最初将其设置为false
,在完成处理程序中将其设置为true,然后使用该变量来确定要显示的内容。最常见的情况是,在这种情况下,您将显示一个文本视图加载…
,然后切换到您现在已加载的内容isLoaded
是正确的。哦,太棒了,谢谢您,它成功了!哦,太棒了,谢谢你,成功了!