Итерация по Swift OrderedDictionary, инициализированному из JSONIOS

Программируем под IOS
Ответить
Anonymous
 Итерация по Swift OrderedDictionary, инициализированному из JSON

Сообщение Anonymous »

Это дополнительный вопрос к моему сообщению на StackOverflow, но теперь я пытаюсь перебрать поле меню в JSON, чтобы отобразить все пункты меню и аллергены в SwiftUI.У меня есть цикл ForEach, который должен перебирать все ключи, но в качестве примера с использованием опубликованного фрагмента JSON он отображает только «Юго-западный тофу» и его аллергены. а не все из них.
struct TodaysMenuOptionsView: View {
@Binding var menuItems: OrderedDictionary
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

func getTodaysLocation(_ today: String)-> String{
if today == day{
return locationName
}
return ""
}

}


Подробнее здесь: https://stackoverflow.com/questions/792 ... rom-a-json
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»