我正在尝试在SwiftUI Form
中创建一个操作,以向我的数据集添加一个额外的Child
。当我尝试附加newChild
时出现错误:
不能对不可变值使用变异成员:“自身”不可变
struct Child : Identifiable {
var id = UUID()
var birthday: Date
var name: String
}
struct ContentView: View {
var children : [Child] = []
var body: some View {
VStack {
Button(action: {
let newChild = Child(birthday: Date(), name: "Carl")
children.append(newChild)
}) {
Text("Add Child")
}
}
}
}
我所知道的数组children
是可变的,那么为什么会出现此错误?
答案 0 :(得分:1)
问题在于,struct
不能更改其自己的属性,除非正在更改那些属性的功能被标记为mutating
。您不能将body
标记为mutating
,但是可以将children
设为@State var
。 @State
变量是可变的,但只能在您视图的body
属性中。
答案 1 :(得分:0)
问题是我要在要对其进行突变的结构中声明数组children
。将声明移到struct之外没有错误。