【发布时间】:2021-05-19 11:58:19
【问题描述】:
我有一个包含项目列表的菜单列表。我在每个项目上都附加了一个“订购此”按钮。为了防止用户多次订购同一个菜单(是的,他们不应该订购多个......)我想为每个项目设置一个布尔变量。当他们点击“Order this”时,布尔值变为 true,按钮变为文本“menuordered”。
我最初的尝试是使用 EnvironmentObject var:
class MenuState: ObservableObject {
@Published var items = [MenuItem]()
var mstate: Bool = false }
但是,当我这样做时,布尔值不会分配给列表中的每个项目。因此,单击时列表中的所有项目都会发生变化。
在菜单结构中分配变量似乎是解决方案,但我使用 json 制作了项目,这是不可变的。
那么,当使用 json 创建项目时,如何为每个项目附加布尔变量?
struct MenuItem: Codable, Equatable, Identifiable {
var id: UUID
var name: String}
[
{
"id": "EF1CC5BB-4785-4D8E-AB98-5FA4E00B6A66",
"name": "Dish",
"items": [
{
"id": "36A7CC40-18C1-48E5-BCD8-3B42D43BEAEE",
"name": "Stack-o-Pancakes",
}]
【问题讨论】:
标签: json swiftui swiftui-list