ios - 列表未在 SwiftUI 中显示来自 API 的数据?
问题描述
我正在尝试从 API 获取数据并希望在 List 中显示。
List {
ForEach(0 ..< (declarationViewModel.items?.count)!) { index in
HStack {
......
但由于从 API 获取数据需要一些时间,因此最初数据为 0,因此无法在列表中显示数据,因为它在获取数据后没有重新加载。
public class DeclarationViewModel: ObservableObject {
@Published var items: [Item]?
@Published var title: String?
init() {
self.items = [Item]()
self.title = ""
}
init(items: [Item]?, title: String) {
self.items = items
self.title = title
}
}
错误日志
forEach<Range<Int>, Int, HStack<TupleView<(HStack<TupleView<(ModifiedContent<ModifiedContent<Image, _EnvironmentKeyWritingModifier<Optional<Color>>>, _FrameLayout>, Text, Spacer)>>, Spacer, _ConditionalContent<ModifiedContent<ModifiedContent<Image, _EnvironmentKeyWritingModifier<Optional<Color>>>, _FrameLayout>, ModifiedContent<ModifiedContent<Image, _EnvironmentKeyWritingModifier<Optional<Color>>>, _FrameLayout>>, _ConditionalContent<ModifiedContent<ModifiedContent<Image, _EnvironmentKeyWritingModifier<Optional<Color>>>, _FrameLayout>, ModifiedContent<ModifiedContent<Image, _EnvironmentKeyWritingModifier<Optional<Color>>>, _FrameLayout>>)>>> count (14) != its initial count (0). `ForEach(_:content:)` should only be used for *constant* data. Instead conform data to `Identifiable` or use `ForEach(_:id:content:)` and provide an explicit `id`!
解决方案
你可以尝试这样简单的事情:
编辑:如果你的物品是可识别的,那么删除“id:.\self”,什么都没有。
List {
if let items = declarationViewModel.items {
ForEach(items, id: \.self) { item in
....
}
}
}
推荐阅读
- android - SAF - 监听云端文件夹中的事件
- ruby-on-rails - 需要用 ruby 在另一个方法中调用 self.method
- python - CPLEX12.9:强分支不适用于混合整数问题?
- django - 如何在 django ORM 过滤器中检查这个 start_date>check_date?
- php - Laravel5.8 更新镜像。在 null 上调用成员函数 store()
- vb.net - 在 vb.net 中添加区分大小写的 OData
- ios - SFSpeechRecognizer 在线:在哪个 url 发送请求?
- windows - 传递名称以空格字符结尾的现有目录时,SHParseDisplayName 失败并显示 ERROR_FILE_NOT_FOUND
- android - 如何在后台接收FCM而不在cordova中点击时触发功能
- netlogo - 我在 Netlogo 中的模型并没有在我的情况下停止