尝试附加结构数组时发生突变错误

时间:2019-08-27 20:44:53

标签: ios swift struct immutability swiftui

我正在尝试在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是可变的,那么为什么会出现此错误?

2 个答案:

答案 0 :(得分:1)

问题在于,struct不能更改其自己的属性,除非正在更改那些属性的功能被标记为mutating。您不能将body标记为mutating,但是可以将children设为@State var@State变量是可变的,但只能在您视图的body属性中。

答案 1 :(得分:0)

问题是我要在要对其进行突变的结构中声明数组children。将声明移到struct之外没有错误。