【发布时间】:2021-03-21 20:41:08
【问题描述】:
我在尝试迭代 JSON 数组(使用 SwiftyJson 解析)以为每个项目创建 VStack(它们是具有水平滚动的 HStack 的一部分)时遇到问题。 JSON 数组填充得很好,但我从不对其进行迭代我总是会收到错误“包含控制流语句的闭包不能与函数生成器'ViewBuilder'一起使用”。
我正在学习 SwiftUI,我正在学习这个。
这是我的代码:
struct ContentView: View {
@State var city = ""
@State var hourly_weathers:[JSON] = []
var body: some View {
Text("\(city)")
.onAppear(perform: {
getData()
})
for hw in hourly_weathers {
VStack(alignment: .leading, spacing: 15) {
Text("\(hw.temp)")
}
}
func getData() {
.....
self.city = json["currently_weather"]["city"].stringValue
self.hourly_weathers = json["hourly_weathers"].arrayValue
}
}
我尝试使用 ForEach(已在 cmets 中建议)但我收到此错误“通用结构 'ForEach' 要求 'JSON' 符合 'Hashable'”
ForEach(hourly_weathers, id: \.self) { hw in
Text(hw["interval"].stringValue)
}
谢谢
【问题讨论】:
-
查找 SwiftUI 的
ForEach -
什么是城市?在我看来,您似乎在 body 属性中添加了 getData() 函数,而且您从 body 返回了两种不同的类型,这是您不应该做的。此外,for 应该是 forEach。
-
@TusharSharma 感谢您的回复。我编辑了我的问题,包括缺少的信息。我试过 ForEach 有其他用户建议,但仍然没有工作。
标签: swiftui