在 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)
我是 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)