在 swift 中更改模型中的 属性 值

changing a property value in the model in swift

我是 swift 的新手,对模型 class 和视图的交互方式有疑问。我正在尝试在视图中实现一个切换,以更改模型 class 中 属性 的值,但在结构中我找不到实现它的方法:

import SwiftUI

struct DomandaRispostaView: View {

    @ObservedObject var dm: DataManager = DataManager.shared
    @ObservedObject var domandaRisposta : DomandaRisposta

    @State private var isEnabled1 = false

    var body: some View {
        VStack {
            Text(domandaRisposta.testoRisposta)
            Form {

                    Toggle(isOn: $isEnabled1) {
                        Text(isEnabled1 ? "Checked" : "Unchecked")
                        domandaRisposta.valoreRisposta == true
                    }

            }
        }
    }
}

问题出在这一行:

domandaRisposta.valoreRisposta == true

在此先感谢您的帮助

这不起作用的任何原因:

 Toggle(isOn: self.$domandaRisposta.valoreRisposta) {
    Text(self.domandaRisposta.valoreRisposta ? "Checked" : "Unchecked")
 }

您不必使用单独的 @State 变量来维护选择状态。我已经编辑了我的代码以根据需要将 Codable 一致性添加到 class。

class DomandaRisposta: ObservableObject, Codable {
    @Published var valoreRisposta: Bool = false

    enum CodingKeys: CodingKey {
        case valoreRisposta
    }

    init(valoreRisposta: Bool) {
        self.valoreRisposta = valoreRisposta
    }

    required init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        valoreRisposta = try container.decode(Bool.self, forKey: .valoreRisposta)
    }

    func encode(to encoder: Encoder) throws {
        var container = encoder.container(keyedBy: CodingKeys.self)
        try container.encode(valoreRisposta, forKey: .valoreRisposta)
    }
}


struct DomandaRispostaView: View {
    @ObservedObject var domandaRisposta: DomandaRisposta

    var body: some View {
        Toggle(isOn: $domandaRisposta.valoreRisposta) {
           Text(domandaRisposta.valoreRisposta ? "Checked" : "Unchecked")
        }
    }
}

以防万一,如果您还没有这样做,请使用

创建视图
let rootView = DomandaRispostaView(domandaRisposta: model)