这是我制作的 StackOverflow 帖子的后续问题,但现在我尝试迭代 JSON 中的
menu
字段以显示 SwiftUI 中的所有菜单选项和过敏原。
我有这个
ForEach
循环,应该迭代所有键,但是,作为使用发布的 JSON 片段的示例,它只显示 "Southwest Tofu"
及其过敏原,而不是全部。
struct TodaysMenuOptionsView: View {
@Binding var menuItems: OrderedDictionary<String, [String]>
var body: some View {
ZStack(alignment: .leading) {
ForEach(menuItems.keys.sorted(), id: \.self) { key in
RoundedRectangle(cornerRadius: 10)
.fill(Color("Menu Options Color"))
.frame(height: 100)
VStack(alignment: .leading) {
Text(key)
.font(.title3)
.fontWeight(.semibold)
if let value = menuItems[key] {
HStack {
ForEach(value, id: \.self) { item in
Text(item)
}
}
}
}
.padding()
}
.padding()
}
}
}
这是我正在使用的 JSON 片段:
{
"day": "Friday",
"locationName": "Memorial Union Quad",
"coordinate": [38.54141, -121.74845],
"menu": [
"Soy Ciltrano Lime Chicken",
["🌾","🫛"],
"Southwest Tofu",
["🫛","V"]
]
}
这是 Swift 中数据建模的样子:
import Foundation
import OrderedCollections
struct Menu : Codable, Hashable {
var id: UUID { UUID() }
let day: String
let locationName: String
let coordinate: [Double]
let menu: OrderedDictionary<String, [String]>
func getTodaysLocation(_ today: String)-> String{
if today == day{
return locationName
}
return ""
}
}